Vue:watch监测不到state的变化

2,822 阅读1分钟
state:{
        menu_active_name:1,
      }
mutations:{
   setmenu_active_name(state,id){
        state.menu_active_name = id;
    }
}
computed:{
            ...mapState([
                'menu_active_name'
            ])
        },
        watch:{
            menu_active_name(newVal,oldVal){
            //第一次刷新页面然后设置menu_active_name可是这里根本没有监听到,但是第二次及之后都能监听到,这是为什么?
                this.activeName = newVal;
            }
        },

watch 应该是在变量改变的时候触发吧 第一次mounted以后 变量还没有改变呢吧 你试试 beforeCreate或者beforeMount 方法中处理一下这个变量

补充一下答案吧,watch不到是因为,在B组件中已经改变了state,A组件已经被销毁,当跳转到A组件,A组件重建,这时候computed的state已经是最新的了,所以watch是不起作用的。