作为Vue插件的一部分向Vuex存储添加变异

丹尼尔·布朗

我正在创建一个小的Vue插件,允许用户从任何组件中添加“页面通知”。我已经成功实现了类似以下内容:

this.$notifications.add("a message");

而且有效!但是我必须注册插件才能运行的变体和操作,将其作为文件的一部分,为我的应用设置商店的其余部分:

export default new Vuex.Store({...})

有没有办法从插件中向我的商店添加动作和变异?当前看起来像这样:

import vuex from './../store';

const MyPlugin = {

  install(Vue, options) {

    // 4. add an instance method
    Vue.prototype.$notifications =
    {
      notificationTypes: {
          0: "warning",
          1: "info"
      },
      add: function (options) {

        let id = "page-notification-" + (vuex.state.pageNotificationsCreated + 1);
        let message = options.message || options || "no message";
        let notificationType = this.notificationTypes[0];

        if(options.notificationType && Number.isInteger(options.notificationType)){
            // Map int to string type
            notificationType = this.notificationTypes[options.notificationType] || notificationType;
        }else{
            // Or use string we were provided ;)
            notificationType = options.notificationType;
        }

        let notification = { id: id, message: message, notificationType: notificationType };
        vuex.dispatch('addNotification', notification);
      }
    }

  }
};

export default MyPlugin;

任何和所有帮助表示赞赏!

贾普·阮

将vuex存储导入到您的插件中;使其难以重用。您应该将依赖项放在插件选项中。

const MyPlugin = {
     install(vue, { store }){ // now your plugin depend on store
          if (!store) {
               throw new Error("Please provide vuex store.");
          }
          // register your own vuex module 
          store.registerModule({states, mutations, actions });

          // hook vue
     }
}

现在,您的插件与vuex完全脱钩了;易于在其他应用程序中重用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过PHP在JSON添加@符号作为对象名的一部分

Classloader是JVM的一部分还是JRE的一部分?

分叉GitHub上存储库的子目录,并将其作为我自己的仓库的一部分

如何在Paw中将文件作为多部分请求的一部分上载?

如何添加外部头盔作为我的头盔的一部分?

使用变量作为语句的一部分

将vuex存储的一部分作为操作的负载分发是正确的吗?

在Vue.js中返回组件的输出作为方法的HTML响应的一部分

在Woocommerce中将新的运输方式作为插件的一部分

伪类(:: after)可以作为HTML标签的一部分添加吗?

作为IntelliJ项目打开Github存储库的一部分

如何使用Firebase UID作为图像URL的一部分从Firebase存储中检索图像?

UiSegmentedControl作为UILabel子类的一部分

取弦的一部分,并与另一部分

将标题作为CURL的一部分

块作为块的一部分

存储SwiftyJSON的一部分

语音或面部识别可以作为身份验证的一部分添加到sirikit吗?

如何以原子方式在作为ConcurrentMap映射一部分的ConcurrentLinkedQueue中添加延迟?

插入语句作为存储过程的一部分不插入行

添加自定义操作作为操作下拉列表 (AEF) 的一部分

Promise 作为 redux 状态的一部分

在 vue 计算属性中使用数组数据项长度作为字符串的一部分

将属性(函数)添加到 pandas.DataFrame() 作为类的一部分

将更改推送到 GitHub 存储库作为 Azure DevOps 中发布管道的一部分

循环结果集并作为存储过程的一部分执行插入语句

if 条件作为 GIT 命令的一部分

别名中的反斜杠未作为其定义的一部分存储

在 terraform 的网络模块中添加服务端点作为子网变量的一部分