vuejs布尔道具手表不触发

Mat*_*rco 4 javascript vue.js

我正在开发一个 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 没有触发布尔值更改,但没有一个对我有帮助

Yas*_*ari 6

如果你想使用 watch 那么你可以尝试将其定义为:

equipped: {
    handler () {
        this.isEquipped = !this.isEquipped;
    },
    immediate: true
}
Run Code Online (Sandbox Code Playgroud)

this.isEquipped每当装备的值发生变化时,这就会改变 的值。