首页 > 解决方案 > vuejs boolean props watch 不会触发

问题描述

我正在开发一个 vue cli 项目,其中项目有两个状态装备和未装备。

该状态由位于 Props 中的布尔值控制。既然你可以切换状态我不得不创建一个数据isEquipped默认设置为false。

然后我添加了一个观察者,但如果我的道具设置为 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;
            },
        },

因此,例如,假设我创建了一个新项目,并将装备设置为 True,观察者不会触发并且 isEquipped 停留在 False,有什么理由吗?

我遇到了多个类似的问题,例如Vue @Watch 没有触发布尔更改,但没有一个对我有帮助

标签: javascriptvue.js

解决方案


如果您想使用手表,那么您可以尝试将其定义为:

equipped: {
    handler () {
        this.isEquipped = !this.isEquipped;
    },
    immediate: true
}

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


推荐阅读