我在一个子组件里面通过this.$store.state能打印出数据,但是通过mapState映射过后就是undefined了,第一个console有数据,第二个undefined,有可能是什么原因呢?值得一提的是我store里面的adminInfo是通过从服务器取的,是否有影响呢?
4 回答
青春有我
TA贡献1784条经验 获得超8个赞
吃鸡游戏
TA贡献1829条经验 获得超7个赞
没看过vuex的源码
猜测:
computed: {...mapState(['count'])}这种写法只是取一次值,因为没有对应的依赖追踪,他只调用一次,不会去更新。computed: mapState({adminInfo: state => state.adminInfo})这种写法是每次都从state里面取值,依赖追踪到state的数据。
所以才导致两次的取得不一样。这也就是为什么几乎用的都是 mapGetters 的原因,因为需要自动的更新数据。当然如果只取出来用一次然后就不管的了,那么用mapState也不是不可以。
慕后森
TA贡献1802条经验 获得超5个赞
因为你在vm这个对象上是没有adminInfo这个变量的,要是想this.adminInfo去获取adminInfo,你可以在computed中定义一个变量adminInfo然后在this.adminInfo去访问。
如下:
computed: mapState({
// 箭头函数可使代码更简练
adminInfo: state => state.adminInfo,
})
添加回答
举报
0/150
提交
取消
