vuex原理与实例运用

mvvm响应式原理

一个属性给它一个dep,例如name,age。dep里面放subs也就是哪些地方用到了name,age属性,subs是数组里面放watcher,compile里面用到了几次name和age,就生成watcher,然后把他放到dep里的subs里,只要数据发生改变,例如,name从why改成了kobe,这个时候,object.defineprototye马上就能监听到改变,这个时候触发notify,遍历subs,然后调用wather里的update函数,然后改变view中的样式

vuex是用来管理组件的共同需要用的数据,vuex中管理的状态都是响应式的

这种方法也可以多个组件用同一个对象,但是这种方法不是响应式的 ,所以就有了vuex

什么时候后需要用到状态管理那?

 先来看一下单页面状态管理

 

现在,我们再创建一个hellovuex.vue,(他为app.vue的子组件),如果这个时候,hellovuex.vue想用app.vue中的counter数据,可以通过props传递

 

 这是以前的思路,现在我们用上vuex来做

首先安装vuex

npm  install vuex --save

view-router的东西都放在router文件夹下面,那vuex的东西也放到一个文件夹下面,这个文件夹一般是store,

 

 当我在组建中想用到counter的时候通过$store来获取

 

 

 不建议从组件中直接修改state,action是用来执行异步操作的

mutation 使用

 在app.vue中方法中commit去调用在vuex中要做的操作

 当我想通过传入的参数一次执行多次的时候

 mutation传参

 两种提交风格

 mutation响应规则

 删除必须通过Vue.delete

 添加必须通过vue.set这种方法添加state里的值,不然添加的内容就不是响应式的

 

mutation同步函数

vuex推荐使用单一状态树来保存数据,也就是只有一个store对象,其实搞多个store对象也可以,但是vuex不推荐

Getter的使用

 

 action

 也可以传递参数

 vuex中的module

 

 

 module中的mutation和store中的mutation一样的直接this.$store.commit

 vuex中store里面的内容太多了不便于我们进行管理

 除了state在index文件中修改一下,mutation,actions,getters,都创建一个新的文件用来保存他们,module创建一个文件夹,下面放moduleA和其他的模块, 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王源偷我华子抽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值