actions vuex 请求_vuex

注:变量用于保存状态的

官方解释:vuex是专门为vue.js应用程序开发的状态管理模式。

多个组件共享的变量存在vuex中(在这里面管理的变量都是响应式的,也就是js中的data改变会同步到视图当中)

然后将这个对象放在顶层的vue实例中,让其它组件可以使用。

那么,多个组件(也就是页面)就可以共享这个对象中的所有变量属性了


什么样的变量需要我们在多个组件里面共享呢?

1、用户登录状态,用户名称,头像,地理位置信息等等

2、商品的收藏、购物车中的物品等

这些状态信息(也就是变量)我们都可以放在统一的地方,对它进行保存和管理,而且他们还是响应式的(变量改变界面同步实现更新)


下面是对于单页面管理的解释:

cc89667da912c9892fba52236b1b8f86.png
图1

8f1af85dfc2d13c584c759e47c7c5305.png
图2

以图2解释上面的图1代码:state里面保存了data中的变量counter,这个counter是在view上面展示的,而view上面能够产生一些actions行为,对应代码中的点击行为,而一旦产生了这些事件actions就会反过来修改我们的状态state(也就是里面存储的变量)【定义状态,状态在view上面展示,view上面产生了actions,actions反过来修改我们的state】


多页面管理:

项目结构:

c7785f0501ce6a87143661d49997726b.png

第一步:

先在src路径下新建一个store文件夹,在这个文件夹里面新建一个index.js文件用于管理所有的需要多个页面共享(多个页面需要同时使用的)的状态(也就是变量),

ebaa9de8b9204c0651707d82e4996148.png

svuex.Store的Store是vuex里面的一个class

第二步:

index.js建好之后需要在main.js里面挂载一下也就是写上import store from './store'

new Vue({

store,//放到这里的话到时候才能拿到上面import后面的store这个对象,它才会给我们的这个东西的属性赋一个$store的属性 到时候再把store赋值给vue.prototype.$store (也就是翻译为:vue.prototype.$store=store),到时候你在其它组件里面都可以通过这个$store去拿到这个store,拿到这个store你就可以在多个组件里面使用store里面相关的东西了

})

9be378dfbb15b95569167728ce19dde7.png

红色圈出的部分属于vuex,vue components也就是vue的组件能够引用vuex里面的state(也就是里面定义的变量)-引用就能直接通过$符号引用,而修改能不行。

dispatch:分发、发布;先让组件(左边红色圈出部分)发布一个行为叫做actions,发布了一个行为之后再commit提交到mutations里面(意思是不让你在其它地方改state,改state的时候必须通过mutations再来改state),那么为什么做这么复杂的一个环节呢?因为有一个devtools这个是vue开发的一个浏览器插件(这里面可以帮助你记录每次一个你修改state的一个状态,为什么要记录这个状态呢?因为vue里面的状态是多个界面管理,一个状态可能被多个界面修改,如果多个页面都修改了,你不知道是哪个修改了)只有通过mutations修改状态,devtools才会帮你记录

f15f2900539c8d902614aa577bce9ef8.png

如果你有异步操作 mutations里面一般都是一些同步操作,因为mutations里面有异步操作的话,devtools这个工具只能跟踪同步的操作,有异步操作(比如发送网络请求backend API-后端api)的话在actions,在actions里面做完之后,再提交到mutations就变成同步了。

f1a47e9d1eed825771ce610cc9dbaf23.png

638f8340609eddf40abd9daaeec703da.png

图中commit语句意思是执行mutations里面定义的方法 在组件里面定义一个方法,在里面提交修改状态的方法(再在需要修改的地方,直接commit从组件提交到mutations)

以上就是最基本的使用


以下是vuex里面的五个核心使用:

b281f0c5cc198438c6294177473043b9.png

ge tters类似于计算属性(计算属性一般用于数据要经过一系列的变化之后再展示的)

场景,每次都需要使用counter的平方:

1、在index.js文件(也就是vuex中)的getters里面定义,如下图

20f4773449c219bd5590ae16e76139ed.png

2、使用:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值