Vuex状态管理的数据有时候可能改变,这时候如果不进行监听,会出现状态管理数据并未动态改变的情况。
在vue页面中使用state中的数据时,如果将state数据赋值给data中的数据再进行使用的话,将拿不到vuex状态管理的值。可以直接使用this.$store.state.xxx.
一、Vuex数据监听
//1.在computed中把数据返回
computed: {
test() {
return this.$store.state.testflag
}
},
immediate:true代表如果在wacth里声明了之后就会立即执行里面的handler方法.
newval就是获取到的testflag的最新值。this.oper()是testflag发生变化以后需要调用的函数。
// 在watch中监听
watch: {
test: {
immediate: true,
handler: function(newval) {
this.oper(newval)
}
}
}
二、另外一种监听:
this.$store.commit("函数名", 要存储的数据);
watch: {
"$store.state.testflag"() {
console.log("获得" + this.$store.state.testflag);
},
},
// Vuex中
// 1、在state中定义一个对象接收
secret:“”
// 2.在mutations接收一下并保存仓库
setSecret(state, secret) {
state.secret = secret
},
三、mapState的用法:
当需要从vuex中获取的变量特别多是,可以使用mapState代替
当一个组件需要获取多个状态时候,将这些状态都声明为计算属性会有些重复和冗余。为了解决这个问题,我们可以使用 mapState 辅助函数帮助我们生成计算属性。
computed:{
...mapState({
testflag: state => state.testflag
testShow: state => state.testShow
})
}
版权声明:本文为qq_43145310原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。