JavaScript警告:分配给函数参数的属性

时间:2018-10-04 15:12:59

标签: 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;

    ...
  },
};

是否可以更正代码并使其在没有警告的情况下进行编译?

1 个答案:

答案 0 :(得分:1)

这不是问题。

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

您唯一的选择是fork该项目,如果它给您带来很多麻烦,请忽略与棉短绒的搭配。