为了账号安全,请及时绑定邮箱和手机立即绑定

为什么$store.state里的数据通过mapState后是undefined?

为什么$store.state里的数据通过mapState后是undefined?

Smart猫小萌 2019-03-15 19:15:43
我在一个子组件里面通过this.$store.state能打印出数据,但是通过mapState映射过后就是undefined了,第一个console有数据,第二个undefined,有可能是什么原因呢?值得一提的是我store里面的adminInfo是通过从服务器取的,是否有影响呢?
查看完整描述

4 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

目测这一段没有问题,怀疑是你在 Vuex 里声明的时候没有声明 adminInfo,所以这个字段不是响应式,所以就获取不到了。把 Vuex 里的代码贴出来看看。


查看完整回答
反对 回复 2019-03-18
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

没看过vuex的源码

猜测:

  1. computed: {...mapState(['count'])}这种写法只是取一次值,因为没有对应的依赖追踪,他只调用一次,不会去更新。

  2. computed: mapState({adminInfo: state => state.adminInfo}) 这种写法是每次都从state里面取值,依赖追踪到state的数据。

所以才导致两次的取得不一样。这也就是为什么几乎用的都是 mapGetters 的原因,因为需要自动的更新数据。当然如果只取出来用一次然后就不管的了,那么用mapState也不是不可以。


查看完整回答
反对 回复 2019-03-18
?
慕后森

TA贡献1802条经验 获得超5个赞

因为你在vm这个对象上是没有adminInfo这个变量的,要是想this.adminInfo去获取adminInfo,你可以在computed中定义一个变量adminInfo然后在this.adminInfo去访问。

如下:


computed: mapState({

    // 箭头函数可使代码更简练

    adminInfo: state => state.adminInfo,

  })


查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 4613 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号