手机网站建设制作东莞建设网站的公司简介
文章目录
- Vuex
 - 介绍
 - 使用步骤
 - 安装
 - 使用
 - 定义配置文件
 - 代码解释:
 
- 导入到 App.vue使用
 - 使用vuex
 
Vuex
介绍

 
 
简单来说就是,多个组件需要共享一个data,原本只能通过父子组件来进行,但是vuex可以实现共享data
使用步骤
安装

npm install vuex@next
 
查看我们的 pakege.json 可以发现安装是否成功
 
 
 已经安装成功
使用
定义配置文件
在项目的 src 目录下创建一个 store 文件夹,并在其中创建一个 index.js 或 index.ts 文件来定义 Vuex store
 
 加入配置代码
// src/store/index.js  
import { createStore } from 'vuex';  export default createStore({  state: {  count: 0,  user: {  name: 'John Doe',  age: 30  }  },  mutations: {  increment(state) {  state.count++;  },  updateUserName(state, newName) {  state.user.name = newName;  }  },  actions: {  asyncIncrement({ commit }) {  setTimeout(() => {  commit('increment');  }, 1000);  },  updateUserNameAction({ commit }, newName) {  commit('updateUserName', newName);  }  },  getters: {  doubleCount(state) {  return state.count * 2;  },  userAge(state) {  return state.user.age;  }  }  
});
 
代码解释:
state(状态)
 含义:state 是 Vuex 中的基本数据,用于存储应用程序的状态变量。它是响应式的,当 state 发生变化时,依赖这些状态的组件会自动更新。
 作用:state 提供了应用程序中所有组件可以共享的数据源。通过将状态集中存储在 state 中,可以方便地管理应用的全局状态。
mutations(突变)
 含义:mutations 是 Vuex 中唯一允许更新应用状态的方法。它们是同步函数,用于对 state 进行同步修改。
 作用:mutations 提供了修改 state 的机制。每个 mutation 都有一个字符串类型的事件类型(type)和一个回调函数(handler),在回调函数中实际进行状态的改变。通过调用 commit 方法并传入 mutation 的类型来触发相应的 mutation。
actions(动作)
 含义:actions 类似于 mutations,但用于处理异步操作。actions 可以包含任意异步代码,并在操作完成后通过调用 mutations 来更新状态。
 作用:actions 提供了处理异步操作(如 API 请求)的能力。它们可以触发 mutations,但不能直接修改 state。通过调用 dispatch 方法并传入 action 的类型来触发相应的 action。
getters(获取器)
 含义:getters 是 Vuex 中用于从 state 中派生出一些状态或计算属性的函数。它们类似于 Vue 组件中的计算属性,但可以在全局范围内使用。
 作用:getters 提供了对 state 的计算或过滤功能,从而可以基于 state 派生出新的状态或数据。getters 可以接受额外的参数,并返回派生出的新状态或数据。在组件中,可以通过 this.$store.getters.getterName 或 mapGetters 辅助函数来访问 getters。
导入到 App.vue使用
import store from './store'
app.use(store); 
 
使用vuex
现在,可以在 Vue 组件中使用 Vuex 状态、提交 mutations 和调用 actions
 实例代码:
<template>  <div>  <p>Count: {{ count }}</p>  <p>Double Count: {{ doubleCount }}</p>  <p>User Name: {{ userName }}</p>  <p>User Age: {{ userAge }}</p>  <button @click="incrementCount">Increment</button>  <button @click="asyncIncrementCount">Async Increment</button>  <button @click="updateUserName('Jane Doe')">Update User Name</button>  </div>  
</template>  <script>  
import { computed } from 'vue';  
import { useStore } from 'vuex';  export default {  setup() {  const store = useStore();  const count = computed(() => store.state.count);  const doubleCount = computed(() => store.getters.doubleCount);  const userName = computed(() => store.state.user.name);  const userAge = computed(() => store.getters.userAge);  const incrementCount = () => {  store.commit('increment');  };  const asyncIncrementCount = async () => {  await store.dispatch('asyncIncrement');  };  const updateUserName = (newName) => {  store.dispatch('updateUserNameAction', newName);  };  return {  count,  doubleCount,  userName,  userAge,  incrementCount,  asyncIncrementCount,  updateUserName  };  }  
};  
</script>
 

 
 然后就能成功的实现vuex数据共享了
