vue之常用的辅助函数mapState、mapMutations、mapActions

vue之常用的辅助函数mapState、mapMutations、mapActions在这里插入图片描述

store / modules / about.js

// about相关
import { ADD_COUNT, SUB_COUNT } from "../mutation-type";
const state = {
  msgArr: ["1", "2"], // 消息数组
  count: 1, // 计数值
}

const mutations = {
  set_msg (state, payload) {
    // state的数据 payload 修改的数据
    state.msgArr = payload;
  },
  [SUB_COUNT] (state, payload) {
    state.count = payload;
  },
  [ADD_COUNT] (state, payload) {
    // console.log("ADD_COUNT", payload);
    state.count = payload;
  }
}

const actions = {
  sub_count ({ commit }, payload) {
    setTimeout(() => {
      commit(SUB_COUNT, payload)
    }, 1000);
  },
  add_count ({ commit }, payload) {
    // console.log("payload", payload);
    setTimeout(() => {
      commit(ADD_COUNT, payload)
    }, 1000);
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
};

store / mutation-type.js

// 关于
export const ABOUT_MSG_ARR = 'about_msgArr'; // about的信息
export const ADD_COUNT = 'add_count'; // count add值
export const SUB_COUNT = 'sub_count'; // count sub值

About.vue

  • 对mapMutations 与 mapActions 与 mapState 的使用
<template>
  <div>
    <div>测试vuex -- msgArr-{{ msgArr }} -- count-{{ count }}</div>
    <button @click="subBtn">-</button>
    <button @click="addBtn">+</button>
  </div>
</template>

<script>
import { mapState, mapMutations, mapActions } from "vuex";
export default {
  name: "About2",
  components: {},
  data() {
    return {
    };
  },
  created() {
  // 调用 mutations 解构出来的 commit方法 ,并且提交传递数据
    this.set_msg([11, 22, 33]);
  },
  computed: {
    ...mapState("about", ["msgArr", "count"]),
  },
  methods: {
    ...mapMutations("about", ["set_msg"]),
    ...mapActions("about", ["add_count", "sub_count"]),

    // 如果是某一个module下的mutation,需要带上namespace
    // ...mapMutations('home', ['setActiveList']), // 🚀 数组形式
    // ...mapMutations('home', { setActives: 'setActiveList' }), // 🚀 对象形式
    subBtn() {
      let count = this.count - 1;
      count = count <= 0 ? 0 : count;
      // 调用 actions解构出来的 dispatch方法 ,并且提交传递数据
      this.sub_count(count);
    },
    addBtn() {
      let count = this.count + 1;
      this.add_count(count);
    },
  },
};
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中,你可以使用Vuex辅助函数来简化在组件中使用Vuex的操作。下面是使用Vuex辅助函数的步骤: 首先,确保已经安装了Vuex和Vue 3。 在你的Vue 3项目中,创建一个store文件夹,并在其中创建一个store.js文件。在store.js文件中,你可以定义你的Vuex store,包括状态(state)、mutations、actions等。 ```javascript // store.js import { createStore } from 'vuex'; const store = createStore({ state: { // 状态 }, mutations: { // 修改状态的方法 }, actions: { // 异步操作的方法 }, }); export default store; ``` 在你的根组件(App.vue)中,使用`createApp`函数创建Vue实例时,将store传递给`use`方法,这样整个应用程序都可以访问到store。 ```javascript // App.vue import { createApp } from 'vue'; import store from './store'; createApp(App).use(store).mount('#app'); ``` 现在,你可以在任何组件中使用Vuex辅助函数来访问store中的状态和触发mutations或actions。 在组件中,你可以使用`mapState`辅助函数来将store中的状态映射到组件的计算属性中。 ```javascript // MyComponent.vue import { mapState } from 'vuex'; export default { computed: { ...mapState(['stateProperty']), }, }; ``` 你也可以使用`mapMutations`辅助函数来将mutations映射到组件的methods中,以便在组件中触发mutations。 ```javascript // MyComponent.vue import { mapMutations } from 'vuex'; export default { methods: { ...mapMutations(['mutationName']), }, }; ``` 最后,你可以使用`mapActions`辅助函数actions映射到组件的methods中,以便在组件中触发actions。 ```javascript // MyComponent.vue import { mapActions } from 'vuex'; export default { methods: { ...mapActions(['actionName']), }, }; ``` 这样,你就可以在Vue 3中使用Vuex辅助函数来简化在组件中使用Vuex了。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值