在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 為什么$store.state里的數據通過mapState后是undefined

為什么$store.state里的數據通過mapState后是undefined?

我在一個子組件里面通過this.$store.state能打印出數據,但是通過mapState映射過后就是undefined了,圖片描述第一個console有數據,第二個undefined,有可能是什么原因呢?
值得一提的是我store里面的adminInfo是通過從服務器取的,是否有影響呢?

回答
編輯回答
局外人

寫法是沒有問題啦,你可以借助chrome瀏覽器的vue插件,里面可以查看vuex的state情況,看看是不是一開始就沒有給上值

我還是更喜歡寫getter用mapGetter

2018年4月24日 05:35
編輯回答
安若晴

因為你在vm這個對象上是沒有adminInfo這個變量的,要是想this.adminInfo去獲取adminInfo,你可以在computed中定義一個變量adminInfo然后在this.adminInfo去訪問。
如下:

computed: mapState({
    // 箭頭函數可使代碼更簡練
    adminInfo: state => state.adminInfo,
  })
2018年7月19日 16:42
編輯回答
九年囚

沒看過vuex的源碼

猜測:

  1. computed: {...mapState(['count'])}這種寫法只是取一次值,因為沒有對應的依賴追蹤,他只調用一次,不會去更新。
  2. computed: mapState({adminInfo: state => state.adminInfo}) 這種寫法是每次都從state里面取值,依賴追蹤到state的數據。

所以才導致兩次的取得不一樣。這也就是為什么幾乎用的都是 mapGetters 的原因,因為需要自動的更新數據。當然如果只取出來用一次然后就不管的了,那么用mapState也不是不可以。

2017年10月11日 00:46
編輯回答
玩控

目測這一段沒有問題,懷疑是你在 Vuex 里聲明的時候沒有聲明 adminInfo,所以這個字段不是響應式,所以就獲取不到了。把 Vuex 里的代碼貼出來看看。

2017年11月16日 12:56
編輯回答
終相守

看著 你沒 寫錯。不應該 有報錯么

2018年6月17日 09:08