Smart貓小萌
2019-03-15 19:15:43
我在一個子組件里面通過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
提交
取消