vuex基本使用流程

一、配置Vuex

1、安装Vuex

npm install vuex --save  
# 或者  
yarn add vuex

2、创建Store文件夹

创建store管理所有共享的状态,这个store通常包含state、mutations、actions、getter等部分

  • state:定义状态
  • mutations:定义修改状态的函数
  • actions:定义异步操作,可以包含多个mutation
  • getters:定义计算属性,基于state派生一些状态

3、在Vue实例中使用Store(通常在main.js中)

import Vue from 'vue';  
import App from './App.vue';  
import store from './store';  
  
new Vue({  
  store,  
  render: h => h(App),  
}).$mount('#app');

二、使用Vuex

1、分模块来便于管理(大哥和它的小弟)

大哥:安装和启用Vuex插件

例:

小弟:写state、mutations、actions、getter等部分,来完成关于其部分的数据的存储

注:小弟们不需要再安装和启用Vuex插件,因为有他们大哥“罩”着他们

例:

const user = {  
  namespaced: true,  //启用了命名空间,访问该模块中的状态或调用其 mutation、action、getter 时,模块名作为命名空间的前缀被添加到了模块内部所有元素的名称之前
  state: {  
    // 定义状态  
  },  
  mutations: {  
    // 定义修改状态的函数  
  },  
  actions: {  
    // 定义异步操作,可以包含多个mutation  
  },  
  getters: {  
    // 定义计算属性,基于state派生一些状态  
  }  
};

2、在组件中实际运用

1、在组件中提交
两种提交:
1、// 在组件中调用这个 mutation,并传递参数  
this.$store.commit('setUserName', 'Alice'); 


2、这种通过actions来完成异步操作
this.$store.dispatch('user/fetchUserData', 123); // 假设 123 是用户的 ID
//user是这个模块的名字
//fetchUserData是对应模块actions中要操作该数据的方法名
//123是要存储的数据

2、在store(user.js)里 

第一种提交:(只涉及state和mutations)

const store = new Vuex.Store({  
  state: {  
    userName: ''  
  },  
  mutations: {  
    setUserName(state, userName) {  
      state.userName = userName;  
    }  
  }  
});  
  

第二种提交: (在actions里经过一些异步操作后,提交到mutations中,最后改变state中对应的状态)

const store = new Vuex.Store({  
  state: {  
    userName: '',  
    token: null  
  },  
  mutations: {  
    // 设置用户名  
    setUserName(state, userName) {  
      state.userName = userName;  
    },  
    // 设置 token  
    setToken(state, token) {  
      state.token = token;  
    }  
  },  
  actions: {  
    // 假设我们有一个异步操作,比如从服务器获取用户名和 token  
    fetchUserData({ commit }, userId) {  
      // 这里只是一个模拟的异步操作  
      setTimeout(() => {  
        // 假设这是从服务器获取的数据  
        const userName = 'Alice'; // 实际上这里应该是根据 userId 从服务器获取的用户名  
        const token = 'some_token_here'; // 类似地,这是从服务器获取的 token  
  
        // 提交 mutations 来更新状态  
        commit('setUserName', userName);  
        commit('setToken', token);  
      }, 1000); // 假设这个异步操作需要 1 秒来完成  
    }  
  }  
});  
  
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

khatung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值