vuex各属性详解

Vuex 和单纯的全局对象有以下两点不同:

  1. Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
  2. 你不能直接改变 store 中的状态。改变 store 中状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

state 定义全局共享的变量,可以通过$store.state.那个属性就可以访问到,也可以在组件中按需导入 import {mapstate} from ’vuex‘ 然后将导入的数据,映射为当前组件的computed属性,就可以快速的访问到state里面的值了[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

mutation vuex中只能通过这种方式改变state里的值,因为这样可以很直观的看见谁修改了里面的值,如果是通过state直接修改的话,可能数据变了,但你不知道哪里改变的state里的值。改变的话通过$store.commit(’调用那个方法‘) 第二种方式就是通过mapmutations导入,然后也跟state一样,通过展开用算符,把他放在methods里,这样就可以很方便的直接调用mutation里的方法

actions里面可以执行异步操作,而mutation里不行,但是actions里面就算你定义了一个函数,里面有异步的方法,但是也不能直接的修改state里的值,要通过action里的第一个形参丶commit来操作才行

然后想要使用action的话,你就得用$store.displth来使用

getter 用于对store中的数据进行加工处理形成新的数据,类似于vue中的计算属性

使用的话第一种方式是this.$store.getter.那个名字

第二种是mapgetter,使用的话把他放在计算属性里面就好了,跟上面使用同理,也是用展开用算符

还有一个是mouduls,他是把引入额外的vuex,然后把他放在moudels里面就可以用其他的vuex了,想用的话其实跟直接用vuex一样,只不过需要,比如

$store.state.a.那个属性就好了 但是还要注意一点,如果直接store.mutations.方法的话,比如你在这个vuex和其他的vuex里都有add这个方法,你直接这样点add,三个vuex里面的东西都会触发,解决方法就是,要么你mutations里面方法的名字改成不一样的,如果你非要名字一样,还要不让他们同时触发

那么你就在被引入的vuex中,加个namespaced =true 那么你再访问的时候,就要,比如

store.commit(a/add)

action在什么地方使用 比如一个医院有什么科室,再比如公司有多少个大区这些。这些数据是比较难改变的,而且一般也不会用来进行修改,只是用作选项集,这个时候我们就可以把这种数据放到vuex里面去。
但是很多时候这种数据是来源于网络的,也就是说我们要请求一次接口才能获取这种数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值