Vue学习记录(codewhy)——Vuex

什么是Vuex

Vuex是一个专门为Vue.js应用程序开发的状态管理模式
采用集中式存储管理应用到所有组件的状态 并以相应的规则保证状态以一种可预测的方式发生变化
状态管理是什么:
其实就是将需要多个组件共享的变量全部存储在一个对象里面 然后将这个对象放在顶层的vue实例中 让其他组件可以使用
和我们自己写的比起来有“响应式”的特点

Vues管理什么状态

需要在多个界面共享的问题
比如用户的登录状态、用户名称和地理位置信息等
比如商品的收藏、购物车中的物品等

Vuex单页面到多页面状态管理切换

想要让helloVuex组件使用app的counter 原做法是用父子组件通信
在这里插入图片描述
在这里插入图片描述

在vue3中配置并使用Vuex

1.在终端输入 npm install vuex --save
在这里插入图片描述
2.在src文件下创建store文件夹 并在文件夹里创建index.js文件
在这里插入图片描述
3.index.js文件内书写代码
在这里插入图片描述
可复制版

import {createStore} from 'vuex'
export default createStore({
    state:{
        counter:1000              
    },
    mutations:{

    },
    actions:{

    },
    getters:{

    },
    modules:{
         
    }
})

4.在main.js中书写代码
在这里插入图片描述
用vuex写法
在这里插入图片描述
在这里插入图片描述
但是不建议对counter的更改也用 @click="$store.state.counter++这样的方法
在这里插入图片描述
因为vue官方建议经过actions、mutations再更改state 因为其中可以经过devtools工具进行记录counter的变化
在这里插入图片描述
而应该
在这里插入图片描述
在这里插入图片描述

几个核心概念

state

单一状态树Single Source of Truth——单一数据源
只创建一个store对象
在这里插入图片描述

gatters

基本使用(类似单个组件里面的计算属性)
想要给counter进行平方运算
在这里插入图片描述
在这里插入图片描述
或者说想要返回所有年龄大于20的学生的信息
在这里插入图片描述在computed里设置more20stu方法 利用过滤器filter进行筛选
在这里插入图片描述
在这里插入图片描述
用getters
在这里插入图片描述
在这里插入图片描述
用第二个参数getter实现调用别的getter内容
在这里插入图片描述

mutations
mutations传递参数问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
传递多个参数的时候用对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参数被称为是mutation的载荷——payload
如果参数不是一个 就以对象的形式传递 也就是说payload是一个对象

mutations的提交风格

普通提交风格
在App.vue中进行commit
在这里插入图片描述
incrementCount就是mutation里的方法名 count是要传的参数
特殊提交风格
在这里插入图片描述
两种不同的提交风格最后传递的参数是不一样的 第二种是对象类型 就要用payload代替

mutations的类型常量

mutation-type.js
在这里插入图片描述
app.vue
在这里插入图片描述
在这里插入图片描述

index.js
在这里插入图片描述
将定义的方法名字抽成常量

mutations同步函数

要求在mutation中的方法必须是同步方法 异步操作的时候devtools将不能很好的追踪这个操作什么时候会被完成
如果必须要用异步操作 就用action

actions

action类似mutation 但是是用来代替mutation进行异步操作
在这里插入图片描述
经过action要用dispatch
在这里插入图片描述
有参数需要传递的时候
在这里插入图片描述

在这里插入图片描述
通过用promise进行调用成功后的返回
在这里插入图片描述
简写为
在这里插入图片描述

在这里插入图片描述
简写为在这里插入图片描述

modules

在这里插入图片描述
都放在state里面会很臃肿 但是vuex要求只能有一个state

在这里插入图片描述
但是允许如果需要抽离的时候可以用modules将store分割成模块

项目的结构

在这里插入图片描述

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值