Vuex modules模式下mapState/mapMutations的操作实例
网络编程 2021-07-04 15:01www.168986.cn编程入门
这篇文章主要介绍了Vuex modules 模式下 mapState/mapMutations 的操作实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们狼蚁网站SEO优化随着长沙网络推广来一起学习学习吧
当我们使用 Vuex 实现全局状态维护时,可能需要将状态值划分多个模块,比如一些 root 级的用户登录状态,token,用户级的用户信息,购物车级的购物车信息。
狼蚁网站SEO优化我们实例演示下如何在多模块下使用 mapState/mapMutations。
- modules 只作用于属性,属性会归属在相应的模块名的命名空间下。
- mutations, actions, getter 没有命名空间的限定,所以要保证全局的唯一性,否则后者会覆盖前者
store/index.js
import Vue from 'vue' import Vuex from 'vuex' import user from './user' import order from './order' Vue.use(Vuex) const store = new Vuex.Store({ modules: { user, order }, state: { hasLogin: false, token: "" }, mutations: { setHasLogin(state, hasLogin) { state.hasLogin = hasLogin }, setToken(state, token) { state.token = token } } }) export default store
store/user.js
const state = { name: "sqrtcat", age: 25 } const mutations = { setUserName(state, name) { state.name = name }, setUserAge(state, age) { state.age = age } } const actions = { } const getters = { } export default { state, mutations, actions, getters }
store/order.js
const state = { name: "cart", count: 0 } const mutations = { setOrderName(state, name) { state.name = name }, setOrderCount(state, count) { state.count = count } } const actions = { } const getters = { } export default { state, mutations, actions, getters }
Vue 引入
import Vue from 'vue' import App from './App' import store from './store' Vue.config.productionTip = false Vue.prototype.$store = store // 注入仓库 const app = new Vue({ store// 注入仓库 }) app.$mount()
index.vue
<template> <view> <button class="primary" @click="setUserName('big_cat')">setUserName</button> <button class="primary" @click="setUserAge(27)">setUserAge</button> <button class="primary" @click="setOrderName('yes')">setOrderName</button> <button class="primary" @click="setHasLogin(true)">setHasLogin</button> <button class="primary" @click="setToken('tokentokentokentoken')">setToken</button> <view class=""> {{userName}} </view> <view>{{userAge}}</view> <view>{{orderName}}</view> <view>{{hasLogin}}</view> <view>{{token}}</view> </view> </template> <script> import { mapState, mapMutations } from "vuex" export default { data() { return {} }, puted: { // 原生 hasLogin() { return this.$store.state.hasLogin }, token() { return this.$store.state.token } // 仓库root属性 可以直接 magic 赋值 // ...mapState(["hasLogin", "token"]), // 因为 modules 下的属性使用了命名空间 所以不能使用数组方式的 magic ...mapState({ userName: state => state.user.name, userAge: state => state.user.age, orderName: state => state.order.name }), // 更多示例 ...mapState({ hasLogin(state) { return state.hasLogin }, token(state) { return state.token } }), ...mapState({ hasLogin: (state) => { return state.hasLogin }, token: (state) => { return state.token } }), }, methods: { // vuex 在使用了 modules 模式时 // mutation依然没有命名空间的概念 所以在定义 mutations 时要注意全局的唯一性 // 否则后者会覆盖前者 ...mapMutations(["setHasLogin", "setToken"]), // magic style1 ...mapMutations(["setUserName", "setUserAge", "setOrderName"]), // magic style2 ...mapMutations({ setUserName(mit, userName) { mit("setUserName", userName) }, setUserAge(mit, userAge) { mit("setUserAge", userAge) }, setOrderName(mit, orderName) { mit("setOrderName", orderName) } }), // 原生写法 setUserName(userName) { this.$store.mit("setUserName", userName) }, setUserAge(userAge) { this.$store.mit("setUserAge", userAge) }, setOrderName(orderName) { this.$store.mit("setOrderName", orderName) } } } </script>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程