vuex的使用(详细)

Vuex概述

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。Vuex 和单纯的全局对象有以下两点不同:

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

Vue组件根据数据渲染视图,不同的数据对应不同的视图。我们也可以理解为web应用处于不同的“状态”,每个状态对应数据的一组取值。因此我们将数据抽出来统一管理也可以称为“状态管理”。
举个例子:

在这里插入图片描述

一、认识VueX五大板块及作用

  1. state:基本数据,存储变量,初始状态
  2. mutations:同步处理改变状态
  3. actions:异步处理改变Mutations里的状态值
  4. module:分模块管理状态仓库
  5. getters :state的计算属性

二、在项目中构建并使用

1.将vuex引入并创建Store仓库

代码如下(示例):

const state = () => {
    return {
        name: 'Sulr',
        age: 18,
        sex: '男'
    }
}

2.在mutations里改变state里的值

代码如下(示例):

const mutations = {
    SET_NAME: (state, name) => {
        state.name = name
    },
    SET_AGE: (state, age) => {
        state.age = age
    },
    SET_SEX: (state, sex) => {
        state.sex = sex
    }

}

3.可在actions里定义方法触发mutations里的方法(可以包含任意异步操作)

提交的是 mutation,而不是直接变更状态。
commit:同步操作,写法: this.$store.commit(‘mutations里的方法名’,值)

代码如下(示例):

const actions = {
    // 改变state里的值
    ChangeAge({ commit }, age) {
        commit('SET_AGE', age)
    },
    // 异步改变state里的值
    asynChangeName({ commit }, name) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                commit('SET_NAME', name)
                resolve('resolve返回的对象name:name')
            }, 2000);
        })
    },

    // 改变多个state里的值
    changeState({ commit }, Object) {
        commit("SET_AGE", Object.age)
        commit("SET_SEX", Object.sex)
    }
}

触发actios里的方法需要dispatch。
dispatch:异步操作,写法: this.$store.dispatch(‘actions方法名’,传值)

4.getters相当于state的计算属性

在主页面可以计算出全局的state中的任意值

注意这里修改的是userInfo里的age值

import Vue from 'vue'
import Vuex from 'vuex'
import userInfo from '@/store/modules/userInfo.js'
Vue.use(Vuex)

export const store = new Vuex.Store({
  modules: {
    userInfo
  },
  getters: {
    age: state => state.userInfo.age + 1
  },
})

5.module分仓库名字管理

此段代码写在store下的index.js中
其余代码均在userInfo.js中,如下import引入

例子中的userInfo在Vue Devtools中也将显示。
代码如下(示例):

import Vue from 'vue'
import Vuex from 'vuex'
import userInfo from '@/store/modules/userInfo.js'
Vue.use(Vuex)

export const store = new Vuex.Store({
  state: {
  },
  mutations: {
  },
  actions: {
  },
  modules: {
    userInfo
  },
  getters: {
  },
})

6.暴露出modules将所有暴露出去

这是在userInfo里暴露出去的对象,在index.js里直接引用即可

export default {
    namespaced: true, // 在单个模块中通过添加namespaced:true的方式使其成为带命名空间的模块。
    state,
    mutations,
    actions,
    getters
}

组件中使用

<template>
  <div class="HomePage">
    <h1>首页</h1>

    <button @click="change()">调取改变Store里的值</button>

    <p>store里的Name:{{ name }}</p>
    <p>store里getters的age:{{ age }}</p>
    <p>store里点击改变后的age:{{ name }}</p>
  </div>
</template>
 computed: {
    name() {
      return this.$store.state.userInfo.name;
    },
    age() {
      return this.$store.getters.age;
    },
  },
  methods:{
    change(){
      this.$store.dispatch('userInfo/asynChangeName','Sulr.Su')
    }
  }

在这里插入图片描述


总结

大致对vuex的讲解就到这里了,看到这里你肯定对vuex不陌生了,你会安装它,配置它,读取state的值,甚至修饰读(Getter),然后你会修改里面的值了(Mutation),假如你有异步操作并且需要修改state,那你就要使用Action,这样,你就可以在你的项目中用起来vuex啦!加油吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Uniapp使用vuex详细步骤如下: 1. 安装vuex:在项目根目录下运行命令 npm install vuex --save 2. 创建store.js文件:在src目录下创建store.js文件,用于定义vuex的状态、mutations、actions等。 3. 在store.js中定义状态:使用Vuex.Store()方法创建一个store对象,并在其中定义state、mutations、actions等。 4. 在main.js中引入store.js:在main.js中引入store.js,并将store对象挂载到Vue实例上。 5. 在组件中使用vuex:在组件中使用this.$store.state访问状态,使用this.$store.commit()方法提交mutation,使用this.$store.dispatch()方法分发action。 以上就是Uniapp使用vuex详细步骤。 ### 回答2: Uniapp是一个跨平台的开发框架,可以同时开发小程序、H5、App等多个平台的应用。Vuex是Uniapp的状态管理工具,用于实现不同组件间的数据共享和状态管理。 使用Vuex详细步骤如下: 1. 在Uniapp项目中安装Vuex,可以通过命令行工具运行以下命令来进行安装: ```bash npm install vuex --save ``` 2. 创建一个名为`store`的文件夹,在该文件夹下创建一个名为`index.js`的文件。这个文件是Vuex的核心文件,用于定义和管理全局的状态。 3. 在`index.js`中引入并使用Vuex,并创建一个Vuex的实例。代码如下所示: ```javascript import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { // 在这里定义全局的状态 }, mutations: { // 在这里定义修改状态的方法 }, actions: { // 在这里定义处理异步操作的方法 }, getters: { // 在这里定义获取状态的方法 } }) export default store ``` 4. 在`main.js`中引入并使用创建好的Vuex实例。代码如下所示: ```javascript import store from '@/store/index' // ... const app = new Vue({ store, // ... }) // ... ``` 5. 在需要使用状态的组件中,可以通过`$store`来访问Vuex中的状态。 - 在模板中可以使用双大括号插值表达式来显示状态值,例如:`{{ $store.state.xxx }}`。 - 在方法中可以通过`this.$store.state.xxx`来获取状态值。 - 如果需要修改状态值,可以使用commit方法调用mutations中定义的方法来修改,例如:`this.$store.commit('mutationName', payload)`。 这就是使用Vuex在Uniapp中进行状态管理的详细步骤。通过Vuex,可以方便地在不同组件间进行状态的共享和管理,提高开发效率和代码维护性。 ### 回答3: Uniapp是一个基于Vue.js开发的跨平台应用框架,而VuexVue.js官方提供的状态管理库,可以用于实现数据的集中管理和共享。下面是使用Vuex详细步骤: 1. 安装Vuex:在命令行中使用npm或yarn安装Vuex库,可以输入命令"npm install vuex"或"yarn add vuex"。 2. 创建store文件夹:在Uniapp项目的根目录下,创建一个名为store的文件夹。 3. 创建store实例:在store文件夹中,创建一个名为index.js的文件,并在该文件中创建Vuex的store实例。可以使用Vuex提供的createStore方法来创建一个新的store实例,并可以传入一些配置项,如state、mutations、actions等。 4. 配置state:在store实例中,定义state变量用于存放应用的数据。可以使用对象的形式来定义state,其中每个属性对应一个数据。 5. 配置mutations:在store实例中,定义mutations用于修改state的数据。可以使用Vuex提供的commit方法来触发mutations中的方法,并修改state中对应的数据。 6. 配置actions:在store实例中,配置actions用于处理异步操作或复杂逻辑。可以使用Vuex提供的dispatch方法来调用actions中的方法。 7. 在页面中使用Vuex数据:在uniapp的页面组件中,可以通过调用Vuex提供的mapState、mapGetters、mapMutations、mapActions等辅助函数来引入store中的数据和方法。 以上就是使用Vuex详细步骤。通过这些步骤,可以在Uniapp项目中更好地管理和共享数据,提高开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值