官方的购物车例子,还有别人仿的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用的不多。可能是为了方便以后扩展(比如以后可能不会用原始数据,需要处理下)?也可能是我们可以把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
	提交
		取消
	