官方的購物車例子,還有別人仿的bilibili項目都有類似下面這種:state: {
status: ''
},
getter: {
status: state => state.status
},
actions: {
checkout ({commit, state}, products) {
commit(types.CHECKOUT_REQUEST)
}
},
mutations: {
[types.CHECKOUT_REQUEST] (state) {
...
}
}1.為什么mutations里要用數組的命名方式?2.為什么還要把state里的內容再在getter里走一遍?
2 回答

慕森卡
TA貢獻1806條經驗 獲得超8個贊
那個不叫數組的命名方式,叫屬性名表達式,為了方便統一管理。畢竟vuex里要寫,用到的組件也要寫,既然這樣就可以提到一個js里,統一管理。
vuex用的不多??赡苁菫榱朔奖阋院髷U展(比如以后可能不會用原始數據,需要處理下)?也可能是我們可以把getters里的值映射到組件的computed中,這樣通過vuex修改了state中的某一項的值之后,就可以自動更新數據。
例如
data: { key: this.$store.key }, computed: { ...mapGetters([ 'key' ]) } // 我們通過vuex修改了state中的key的值之后,`computed`中的獲得的值是會自動變的,因為vuex中的`getter`就是"計算屬性"

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
關于 mutations 里方法的 Computed Property Names 命名,這里的 types.CHECKOUT_REQUEST 相當于 C 語言中的常量,主要作用是防止拼寫錯誤,如果不采用 [types.CHECKOUT_REQUEST] 這種方式,當有拼寫錯誤時代碼檢查工具也檢查不出來,是一種值得借鑒的代碼風格。
添加回答
舉報
0/150
提交
取消