VUEXvuex

一、什么是状态管理?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、vuex 的基本使用

注意:vuex里的数据都是响应式的

1、安装vuex

npm install vuex@next
注意:vuex@next的意思是安装最新版本的vuex

2、创建Store

在这里插入图片描述

3、在组件中使用store

在这里插入图片描述

三、单一状态树

注意:虽然一个应用可以创建多个store,但是建议只创建一个store实例

在这里插入图片描述

三、vuex的五大核心

1、state

注意,state属性为一个函数返回一个对象 和data一样

在这里插入图片描述

使用opctionsAPI computed展示state:
在这里插入图片描述


用于展示state的辅助函数 mapState

在optionsAPI computed中使用:

上边的两种写法很笨重,所以vuex提供了一个函数-----mapState,mapState就是对state进行一个映射,mapState()函数返回一个对象。这个函数要求传入一个参数,这个参数可以是数组形式,也可以是对象形式。

数组形式:数组里边写你想要映射过来的对应的state的key
在这里插入图片描述


对象形式: 如果你担心counter,name,age等映射过来的名字可能会跟你在组件data中定义的名字冲突,可以使用对象形式。对象形式可以对store实例中state中的状态重新命名
在这里插入图片描述

在compositionAPI 中使用:

在compositionAPI中使用computed()展示state:

在这里插入图片描述
但是上边的方法太麻烦了,我们想要使用mapState()函数来展示state就需要这样:

下边的方法灵感来自于coderwhy老师

在这里插入图片描述
也可以使用高阶函数封装成一个hook:
在这里插入图片描述
useState()函数不仅可以穿进去一个数组 也可以是对象。因为传进去的数组或者函数就是mapState()函数在操作。

2、getters

某些属性我们可能会经过变化后使用,这时候就可以使用getters

getters的基本使用

在这里插入图片描述
在这里插入图片描述
getters也可以返回一个函数:
在这里插入图片描述
return一个函数的应用场景就是这样可以接收参数了,因为本来getters是不能接受参数的(除了state,getters之外不能接受其他的参数)

在这里插入图片描述

mapGetters

mapGetters在opctionsAPI 中结合 computed的使用:
在这里插入图片描述
mapgetters对象写法:
在这里插入图片描述

mapGetters在 compositionAPI 中结合 computed() 的使用:

自己写的:
在这里插入图片描述

老师封装的hook:
在这里插入图片描述

3、mutation

更改 Vuex 的 store 中的状态(state)的唯一方法是提交 mutation
注意:mutation里不能有异步操作

基本使用

在这里插入图片描述

mutation携带数据

在这里插入图片描述

另一种提交方式

在这里插入图片描述

辅助函数mapMutations

在这里插入图片描述
对象写法以及传参:
在这里插入图片描述
setup中的写法:
在这里插入图片描述

在这里插入图片描述

4、actions

actions的基本使用

当你想把一些异步操作从组件内放到vuex里边的时候,不能直接放到mutation里边,因为mutation不允许有异步操作,需要放到action然后通过action提交mutation

在这里插入图片描述

在这里插入图片描述
在actions里异步操作:
在这里插入图片描述
在组件内实现异步操作然后更改state状态:
在这里插入图片描述

在actions里实现异步操作:
在这里插入图片描述
在这里插入图片描述
携带参数:
在这里插入图片描述
辅助函数mapActions:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
mapActions在compositions中使用:
在这里插入图片描述
如果你想在组件内监听到网络请求什么时间结束,可以这样写:
action函数本身其实可以返回一个Promise
在这里插入图片描述

在这里插入图片描述

module的基本使用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
modules里的getters参数:
在这里插入图片描述
在这里插入图片描述
如果想在modules中的 actions 提交commit来修改根部state中的状态需要这样写:
在这里插入图片描述

dispath同上边这张图一样,context.dispath(‘incrementAction’,null,{root:true});

module的辅助函数

在这里插入图片描述
方式二的演示:
在这里插入图片描述
方式三的演示:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/l_l_l_l_l_l_l_li/article/details/118611167
今日推荐