Vue3 store仓库数据间流转 Vuex4 + Pinia

文章介绍了在Vue3中使用Vuex4进行状态管理的基本步骤,包括创建store、mutations、actions和getters。同时,对比了Pinia的配置式和组合式API,展示如何在组件中访问和修改数据。Pinia作为Vue的新一代状态管理工具,提供了更简洁的语法。
摘要由CSDN通过智能技术生成

上文 讲了vue2数据流转处理的方法 这文讲讲vue3

Vuex

在 Vue 3 中 可以使用 Vuex 4 来进行状态管理和存取数据。
1 创建一个 store 实例

// store.js

import { createStore } from 'vuex';

const store = createStore({
  state() {
    return {
      data: null // 初始化数据为空
    };
  },
  mutations: {
  	// 操作数据
    setData(state, payload) {
      state.data = payload; // 设置数据
    }
  },
  actions: {
  	// 触发mutations
    fetchData({ commit }) {
      // 模拟异步获取数据
      setTimeout(() => {
        const newData = '这是新的数据'; // 模拟获取的数据
        commit('setData', newData); // 调用 mutation 设置数据
      }, 1000);
    }
  },
  getters: {
  	//简化数据
    getData(state) {
      return state.data; // 获取数据
    }
  }
});

export default store;

2 在 main.js 中引入并挂载 store:

import { createApp } from 'vue';
import App from './App.vue';
import store from './store';

createApp(App).use(store).mount('#app');

3 在组件中访问和修改数据:
*** 在 Vue 3 中使用 Vuex 进行数据的存取和修改。state 存储数据,mutations 修改数据,actions 异步操作和提交 mutations,getters 获取数据。***

import { computed } from 'vue';
import { useStore } from 'vuex';

export default {
  setup() {
    const store = useStore();

    // 获取数据
    const data = computed(() => store.getters.getData);

    // 修改数据
    const updateData = () => {
      const newData = '这是更新后的数据';
      store.commit('setData', newData);
    };

    // 异步获取数据
    const fetchData = () => {
    	// dispatch 触发actions方法函数
      store.dispatch('fetchData');
    };

    return {
      data,
      updateData,
      fetchData
    };
  }
};
Pinia配置式api写法

1 创建一个 Pinia store 实例

// store.js

import { defineStore } from 'pinia';

export const useStore = defineStore('store', {
  state() {
    return {
      data: null // 初始化数据为空
    };
  },
  actions: {
    updateData(newData) {
      this.data = newData; // 更新数据
    }
  }
});

2 在 main.js 中引入并挂载 Pinia:

import { createApp } from 'vue';
import App from './App.vue';
import { createPinia } from 'pinia';

const app = createApp(App);
const pinia = createPinia();
app.use(pinia);
app.mount('#app');

3 在组件中访问和修改数据:

import { computed } from 'vue';
import { useStore } from 'pinia';

export default {
  setup() {
    const store = useStore();

    // 获取数据
    const data = computed(() => store.data);

    // 修改数据
    const updateData = () => {
      const newData = '这是更新后的数据';
      store.updateData(newData);
    };

    return {
      data,
      updateData
    };
  }
};
Pinia 组合式api 写法

pinia 省略了mutations操作 语法更加简洁 也是vue数据仓库的趋势
1 创建一个 Pinia store 实例

// store.js

import { createPinia } from 'pinia';

export const store = createPinia();

store.state({
  data: null // 初始化数据为空
});

2 在 main.js 中引入并挂载 Pinia:

import { createApp } from 'vue';
import App from './App.vue';
import { store } from './store';

createApp(App).use(store).mount('#app');

3 在组件中访问和修改数据:

import { computed } from 'vue';
import { useStore } from 'pinia';

export default {
  setup() {
    const store = useStore();

    // 获取数据
    const data = computed(() => store.state.data);

    // 修改数据
    const updateData = () => {
      const newData = '这是更新后的数据';
      store.state.data = newData;
    };

    return {
      data,
      updateData
    };
  }
};

前端 提供的是一份数字化的产品 而基础便是数据
对于数据的处理确实是前端开发中重要一环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值