store(vuex响应式数据)

store.js 文件是一个 Vuex 状态管理库的配置文件,用于在 Vue 应用中集中管理状态(数据)和行为(方法)。它使得不同组件之间可以共享和响应状态的变化。

下面是对 store.js 文件的详细解释:

1. State(状态)#

const state = () => ({
  addData: {}  // 用于存储 res 数据
});

state 是 Vuex 中存储应用数据的地方。在这里,我们定义了一个 addData 属性,它是一个对象,默认值是一个空对象 {}。这个属性将用来存储从 API 请求中获取的数据(例如图表需要的数据)。

  • addData 可以是任何类型的数据(数组、对象、字符串等),具体取决于你获取的数据格式。
  • state 用于定义全局状态,这样当应用中的不同组件需要访问或修改相同的数据时,可以直接从这里获取或修改。

2. Getters(获取器)#

const getters = {
  getAddData: (state) => state.addData  // 获取 addData 的值
};

getters 是 Vuex 中用来读取状态的“计算属性”。它允许我们在 Vue 组件中通过计算属性的方式,获取 state 中存储的数据。getters 的作用是将状态值暴露给外部(组件)。

  • getAddData 是一个 getter,接收 state 作为参数,返回 state.addData
  • 在 Vue 组件中可以通过 mapGetters 辅助函数将其映射为计算属性,方便组件访问状态。

3. Mutations(变更器)#

const mutations = {
  setAddData(state, data) {
    state.addData = data;  // 设置 addData 的值
  }
};

mutations 是用来修改 state 的方法。它必须是同步的,即你不能在 mutations 中做异步操作。mutations 是 Vuex 中唯一修改状态的方式。

  • setAddData 是一个 mutation,接收两个参数:
    • state: 当前 Vuex 状态。
    • data: 传入的新数据。
  • setAddData 方法中,我们将传入的 data 赋值给 state.addData,从而更新 addData 的值。

注意: mutations 的作用仅仅是修改状态,它不能处理异步操作。

4. Actions(动作)#

const actions = {
  setAddData({ commit }, data) {
    commit('setAddData', data);  // 提交 'setAddData' mutation
  }
};

actions 用于执行异步操作并且可以调用 mutations 来改变 state。它们不能直接修改 state,但可以通过 commit 调用 mutations 来修改 state

  • setAddData 是一个 action,接收两个参数:
    • { commit }: Vuex 提供的 commit 方法,用来调用 mutations
    • data: 传入的新数据。
  • setAddData 中,我们通过 commit 调用 mutations 中的 setAddData,并将 data 作为参数传入。这样就可以更新 state.addData 的值。

actions 通常用于处理异步操作(例如 API 请求),然后调用 mutations 来更新状态。

5. 如何在组件中使用 Vuex#

在组件中获取数据:#

你可以使用 mapGetters 来在 Vue 组件中获取 state 中的数据:

import { mapGetters } from 'vuex';

export default {
  computed: {
    ...mapGetters({
      addData: 'getAddData'  // 通过 getAddData 获取 Vuex 中的 addData
    })
  }
}
  • mapGetters 会把 Vuex 中的 getAddData 映射为组件的计算属性 addData,你可以像访问普通计算属性一样访问它。

在组件中提交数据:#

你可以使用 mapActions 来在组件中调用 actions 来提交数据:

import { mapActions } from 'vuex';

export default {
  methods: {
    ...mapActions({
      setAddData: 'setAddData'  // 调用 Vuex 的 setAddData action
    }),

    someMethod() {
      const data = { /* 获取或处理的数据 */ };
      this.setAddData(data);  // 调用 action 更新 Vuex 中的 addData
    }
  }
}
  • mapActions 会将 Vuex 中的 setAddData 映射为组件的 setAddData 方法,调用时会触发 actions 中的 setAddData 方法,并将数据传递给 mutations 来更新 state.addData

6. 总结#

  • state 用于存储全局数据。
  • getters 用于获取 state 中的数据,类似于组件的计算属性。
  • mutations 用于同步修改 state 中的数据,改变状态是通过 commit 触发的。
  • actions 用于处理异步操作,并可以调用 mutations 来修改 state

7.项目中的使用#

1.先定义一个.js文件用来存储后端响应的数据值

//活跃一览请求数据存储
const state = () => ({
    data: {}  // 用于存储 res 数据
});

const getters = {
    getData: (state) => state.data  // 获取 addData 的值
};

const mutations = {
    setData(state, data) {
        state.data = data;  // 设置 addData 的值
    }
};

const actions = {
    setData({ commit }, data) {
        commit('setData', data);  // 提交 'setAddData' mutation
    }
};

export default {
    state,
    getters,
    mutations,
    actions
};

2.如何往里面存值
image
image
3.如何使用里面存的值
image

通过 Vuex,组件之间能够共享数据和状态,避免了父子组件之间传递数据时的复杂性,简化了状态管理。

作者:freps

出处:https://www.cnblogs.com/freps/p/18641533

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   LL。。。  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示