vuex 学习之路

编程入门 行业动态 更新时间:2024-10-21 09:38:15

vuex 学习<a href=https://www.elefans.com/category/jswz/34/1770107.html style=之路"/>

vuex 学习之路

目录

自我认知:

官方介绍:

1.state 中定义了userInfo对象;

2.getters:

3.mutations:可以简单的理解为存值(注意:mutation 都是同步事务)

4.actions:异步事务

5.modules:

6.vuex安装引入:


 自我认知:

vuex经常在项目中看到,实际应用起来也只是会用,今天抽时间认真学习了一下。

一般小型项目只用store模式就够了。简单全局传参使用;平时只是肤浅的知道是一种状态管理,却不知其真正的用处。

官方介绍:

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

Vuex核心概念:state、getters、mutations、actions、modules。

下面结合实例说明核心概念:

先看一段store文件定义的相关代码:第一段代码

import Vue from 'vue'
import Vuex from 'vuex'
import app from './modules/app' //分模块modules 
Vue.use(Vuex)
const store = new Vuex.Store({state: {userInfo:{}},mutations: { //不同的使用场景changeUserInfo(state,data){Vue.set(state,'userInfo',data)},userInfo: (state, age) => {state.userInfo.age= age}},actions: { // 获取用户信息GetInfo({commit,state}) {return new Promise((resolve, reject) => {getInfo({token: "xxx"}).then(res => {commit("changeUserInfo", res); resolve(res);}).catch(error => {reject(error);});});},},modules: {app },getters
})export default store

如上代码所示:

1.state 中定义了userInfo对象;

1.1使用方式:

1)全局任意使用写法:this.$store.state.userInfo;

2)借助辅助函数:(一般使用...mapState的多) -- 第二段代码

// 在单独构建的版本中辅助函数为 Vuex.mapState
import { mapState } from 'vuex'
export default {computed: {//直接使用辅助函数写法//mapState([// 映射 this.userInfo为 store.state.userInfo//'userInfo'//])//对象展开运算符写法...mapState({userInfo: (state) => state.user.userInfo}),},created() {console.log(this.userInfo,"打印试试");},
}

2.getters:

按照之前学习java的经验可以理解为获取值,在getters中可以二次计算或者修改state中定义的值,可以理解为state的计算属性。

在上面第一段代码中单独定义了一个getter.js 第三段代码

const getters = {userInfo: state => state.app.userInfo}
export default getters

使用方法:

1)也是可以直接调用的:

this.$store.getters.userInfo

2):借助辅助函数:第四段代码

import { mapGetters} from 'vuex'
export default {computed: { //对象展开运算符写法...mapGetters({userInfo: (state) => state.user.userInfo}),},created() {console.log(this.userInfo,"打印试试2");},
}

3.mutations:可以简单的理解为存值且可修改(注意:mutation 都是同步事务

例如:参照第一段代码中的案例

存值及提交值的方式:

let user={};

$storemit('changeUser',user);

3.1在mutations中:state是mutations接收的第一个参数,data是commit提交过来的最终参数值。

changeUserInfo(state,data){
      Vue.set(state,'userInfo',data)
},

3.2提交方式2:也是借助辅助函数

import { mapMutations } from 'vuex'
export default {// ...methods: {...mapMutations(['userInfo', // 将 `this.userInfo()` 映射为 `this.$storemit('userInfo')`// `mapMutations` 也支持载荷:'userInfo' // 将 `this.userInfo(userInfo)` 映射为 `this.$storemit('userInfo', userInfo)`]),}
}

4.actions:异步事务

官网解释:

Action 类似于 mutation,不同在于:

  • Action 提交的是 mutation,而不是直接变更状态。
  • Action 可以包含任意异步操作。

很明显action可以通过函数来改写state的值并提交mutation;

参考第一段代码案例:

actions中通过接口getInfo获取到的用户信息提交到mutations中;

4.1actions的分发调用:

this.$store.dispatch("GetInfo");来调用getInfo方法;

5.modules:

使用场景:当项目中操作多个不同对象时,可以使用modules将store模块分割;

第一段代码中的app就是一个分割案例;

app.js中有自己的state以及motations等;

5.1使用方法:app.js内容

const demoform = {state: {shopNum: 0},mutations: { SHOP_NUM: (state, shopNum) => {state.shopNum = shopNum;}},actions: {}
};export default demoform ;

引入:见第一段代码;

6.vuex安装引入:

1.安装:按照官方提示安装即可:

npm install vuex@next --save

2.引入在mani.js引入即可;

import store from "./store";

至此为止就介绍结束了。文中不当的地方还请同学们多多指点。

更多推荐

vuex 学习之路

本文发布于:2024-03-23 23:53:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1744328.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:之路   vuex

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!