猿问
下载APP

请问vuex中为什么把把异步操作封装在action,把同步操作放在mutations?

vuex中为什么把把异步操作封装在action,把同步操作放在mutations


一只斗牛犬
浏览 546回答 4
4回答

翻过高山走不出你

devtools 追踪状态变化。事实上在 vuex 里面 actions 只是一个架构性的概念,并不是必须的,说到底只是一个函数,你在里面想干嘛都可以,只要最后触发 mutation 就行。异步竞态怎么处理那是用户自己的事情。vuex 真正限制你的只有 mutation 必须是同步的这一点(在 redux 里面就好像 reducer 必须同步返回下一个状态一样)。同步的意义在于这样每一个 mutation 执行完成后都可以对应到一个新的状态(和 reducer 一样),这样 devtools 就可以打个 snapshot 存下来,然后就可以随便 time-travel 了。如果你开着 devtool 调用一个异步的 acti

蛊毒传说

vue组件的数据传递应该是单向,永远是向下的,把父组件属性方法传递到子组件。 如果子组件要改变不同的颜色,是应该接受父组件传递进来的props,自己调用自己的方法,把props当个参数来判断来显示什么颜色,而不是让父元素调子组件的方法。

慕容4345310

vue用vuex管理数据,能组件内清除state里的数据吗组件获取 state 用 vuex 的 getter 组件触发动作用 vuex 的 action 修改 state 用 vuex的 mutation

烙印99

简单点将就是存数据的一个地方,同时还提供了相应的操作,有点类似service的作用,详细的内容你自己百度 vuex 相关,我简单做一个介绍(我用的手脚架):如图store里面有4个核心内容,State、Getters、Mutations和Actions,我的理解是这样的(可能有点粗浅,你将就着看看)State是存数据用的,Getters有点类似计算属性,进行简单的逻辑计算,Mutations是一些简单的方法,又来改变state,官方说法是“更改 Vuex 的 store 中的状态的唯一方法是提交 mutation”,Actions是较为复杂的方法,并不能直接改变状态,而是提交mutations,可以包含任意异步操作。如图我写的一个简单的store文件,将他抛出来之后一般我们会将它Modules分割,避免太多造成混乱最后在main.js中引入,定义为全局的变量在模块中this.$store.state.customer.customerList就能调用里面的数据了
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答