JavaScript 警告 : Assignment to property of function parameter

标签 javascript vue.js

我编译了vue-flash-message来自来源的组件并收到以下警告:

✘  http://eslint.org/docs/rules/no-param-reassign  Assignment to property of function parameter 'Vue'
src\components\vue-flash-message\index.js:173:5
  Vue.prototype[options.storage] = FlashBus;

在以下代码中:

export default {
  install(Vue, config = {}) {
    const defaults = {
      method: 'flash',
      storage: '$flashStorage',
      createShortcuts: true,
      name: 'flash-message',
    };
    const options = Object.assign(defaults, config);
    ...
  const FlashBus = new Vue({
    data() {
      return {
        storage: {
        },
      };
    },
    methods: {
      flash(msg, type, opts) {
        return new FlashMessage(FlashBus, msg, type, opts);
      },
      push(id, message) {
        Vue.set(this.storage, id, message);
      },
      destroy(id) {
        Vue.delete(this.storage, id);
      },
      destroyAll() {
        Vue.set(this, 'storage', {});
      },
    },
  });
    ...
    Vue.prototype[options.storage] = FlashBus;

    ...
  },
};

是否可以更正代码并使其编译而不发出警告?

最佳答案

这不是问题。

您有一个针对 no-param-reassign 的 ES Lint 规则设置。这与 Vue 创建插件的方式相冲突,在这种方式中,您被引导直接写入 prototypeYou can see my statement reinforced here

您唯一的选择是fork该项目,并忽略带有 linter 的行(如果它让您烦恼的话)。

关于JavaScript 警告 : Assignment to property of function parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52650132/

相关文章:

javascript - 如何将 v-for 计算数据作为参数发送到 Vue.js 上运行?

javascript - 未将事件绑定(bind)到 li 项目之一

javascript - 如何从私有(private)函数访问组件范围?

javascript - 比较两个数组并将结果推送到新数组

javascript - 在使用 Vue.js 加载数据之前阻止显示组件

typescript - 基于 Vue 类的组件警告 : Property is not defined on the instance but referenced during render

javascript - 更改 jquery 中的变量时出现问题

javascript - 从 asp.net mvc 调用 javascript

java - 如何将数据服务器(用JAVA编写)发送到客户端(用Node.js编写)

javascript - 读文件组件(fs.readFile)