JavaScript警告:分配给函数参数的属性
我从源代码处编译组件,并得到以下警告:JavaScript警告:分配给函数参数的属性,javascript,vue.js,Javascript,Vue.js,我从源代码处编译组件,并得到以下警告: ✘ 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
✘ 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;
...
},
};
是否可以更正代码并使其在编译时不出现警告?这不是问题
您有一个ES Lint规则设置,用于不重新分配参数。这与Vue创建插件的方式相冲突,即直接向原型写入
你唯一的选择就是放弃这个项目,如果有那么多麻烦你的话,就不用管你的线头了。我不明白什么是FlashBus?这是Vue的全局变量吗?不太确定Vue扩展如何工作,但这看起来确实像是插件作者故意向原型添加了一些东西,因此您可能可以忽略该警告,因为它不是您自己的代码。可能警告来自您的linterWhat是Vue.prototype[options.storage]=FlashBus的目标;线更改每个Vue实例背后的原型(尤其是使用可枚举属性)似乎是件坏事:-@TimageWepe FlashBus是上面定义的,如果您不同意,请参阅仅禁用警告。