Vue开发应用中遇到的问题与总结
1 data 与 computed 区别
data,详见
computed,详见
data 中不能使用 computed 中的数据, computed 中可以使用 data 数据
归根结底就是一个 Vue 实例在渲染的时候数据解析的顺序问题。官方 v2.6.14 版本源码,详见
1 | // props -> methods -> data -> computed -> watch |
! 注意
以上代码的执行顺序,并非是 Vue 风格指南中组件/实例的选项的顺序
2 vuex 中 mapState 辅助函数
mapState
函数返回的是一个对象,结合 ES6 的扩展运算符,就能自动实现 computed 中的多个计算属性加入,减少手动一个个的去写。
1 | computed: { |
使用对象展开运算符将此对象混入到外部对象
中,这句话就很关键。
另外,mapGetters,mapActions,mapMutations 与 mapState 的用法有着异曲同工之妙。
3 vuex中Modules命名空间理解
默认情况下,模块内部的 action、mutation 和 getter 是注册在全局命名空间的——这样使得多个模块能够对同一 mutation 或 action 作出响应。用法详见
! 注意
在没有 namespaced: true 指明的模块中,除了 action、mutation 和 getter,其它都是局部的,state 是局部的。
对于模块内部的 action,局部状态通过
context.state
暴露出来,根节点状态则为context.rootState
,这也是为什么 action 的参数不用store实例本身,而是 context 上下文。