我正在开发一个 vue cli 项目,其中项目有两种状态:装备和未装备。
该状态由位于 Props 中的布尔值控制。由于您可以切换状态,因此我必须创建一个默认设置为 false 的数据 isEquipped。
然后我添加了一个观察者,但如果我的 props 设置为 True,它不会改变我的数据值。
这是代码
name: "Item",
props: {
Index : Number,
name: String,
desc : String,
bonus: Array,
equipped : Boolean
},
data() {
return {
isEquipped : false
}
},
watch: {
equipped: function(stateEquipped) {
this.isEquipped = stateEquipped;
},
},
Run Code Online (Sandbox Code Playgroud)
举例来说,假设我创建了一个装备设置为 True 的新项目,观察者不会触发并且 isEquipped 保持为 False,这有什么原因吗?
我遇到了多个类似的问题,比如这个Vue @Watch 没有触发布尔值更改,但没有一个对我有帮助
如果你想使用 watch 那么你可以尝试将其定义为:
equipped: {
handler () {
this.isEquipped = !this.isEquipped;
},
immediate: true
}
Run Code Online (Sandbox Code Playgroud)
this.isEquipped每当装备的值发生变化时,这就会改变 的值。