Vuex进阶使用之modules模块化划分、mapState、mapActions辅助函数的使用

举报
达拉崩巴斑得贝迪卜多 发表于 2021/12/20 23:32:36 2021/12/20
【摘要】 注解:vuex是一个很简单、很方便的技术,入门很简单,这里给大家详细介绍下vuex的进阶使用。 一、vuex模块化modules 1、项目根目录新建一个sotre文件夹,在store文件夹内,新建两个...

注解:vuex是一个很简单、很方便的技术,入门很简单,这里给大家详细介绍下vuex的进阶使用。

一、vuex模块化modules

1、项目根目录新建一个sotre文件夹,在store文件夹内,新建两个文件(一个文件,一个文件夹),一个index.js文件,一个modules文件夹。

目录结构:

store

index.js --文件

modules --文件夹

2、store->index.js

import Vue from 'vue'
import Vuex from 'vuex'
 
import  modules from './modules'
Vue.use(Vuex)
 
export default new Vuex.Store({
  state: {
 
  },
  mutations: {
  },
  actions: {
  },
  modules:modules.   //注意哦,后一个modules文件夹中有index.js文件,所以可以直接写文件夹名,前端中文件夹中有index.js 可以只写文件夹名(默认引入文件夹中的index.js)
})

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3、store->modules
目录结构

store

index.js

modules

index.js //将所有模块引入一个js文件,统一导出,store->index.js中就只需要引入modules,类似modules->index.js

cart.js //购物车模块

login.js //登陆模块
    
4、具体模块写法,cart.js

//cart.js
const state={
   cart:"one-sotre"
}
const actions={
    cart({commit},data){
        commit("cart",data)
    }
};
const mutations={
    cart(state,data){
 
        state.cart=data;
    }
}
export  default {
    state,
    actions,
    mutations
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

5、将store->modules->[cart.js,login.js]导入store->modules->index.js中,统一处理导出

//store->modules->index.js
import login from './login';
import cart from './cart';
export default{
  login,        //键值相同时,login:login==login
  cart   
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

6、在store->index.js中使用导出[login,cart]模块

import Vue from 'vue'
import Vuex from 'vuex'
 
import  modules from './modules'.   //简写,引入modules/index.js
Vue.use(Vuex)
 
export default new Vuex.Store({
  state: {
 
  },
  mutations: {
  },
  actions: {
  },
  modules:modules
})

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在main.js中引入即可。

7、vue components组件中使用
//使用vuex中的函数mapState、mapAction,需要注意mapState、mapGetter这两个需要数据实时更新的书写在computed计算属性中,mapAction等方法写在methods方法中。

//.vue,这里只讲两个方法,mapState和mapAction,mapState和[mapGetters,mapMutions,mapActions]写法可以简单分为两种,所以介绍两种写法.
<script>
import {
        mapState,
        mapActions
    } from 'vuex'
export default{
    mounted(){
    this.login("true");  //调用mapActions['login'];
    console.log(this.login) //调用..mapState({login:state=>state.login.login})
},
    methods:{<br>  // 在uniapp中写法,可以直接映射模块中的login
    ...mapActions(['login']).  //这里引入的是store->modules->login.js中的vuex Actions方法,...mapActions['login']==this.$store.dispatch("login"),mapMutions,mapActions写在methods中.<br>  //在vue中写法,需要加上模块名称,如modules中的login中的login方法,写法如下<br> ...mapActions({'login':'login/login'}).  //指store.dispatch('login/login');
},

computed{
    ...mapState({login:state=>state.login.login}) //这里引入的是store->modules->login.js中的state数据,...mapState({login:state=>state.login.login})==this.state.login.login;mapState,mapGetters写在computed中,跟computed自身属性有关.
}
}
</script>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

这个文档聚集了modules 模块化写法,vuex基础用法,mapState、mapGetters辅助函数的使用。

文章来源: lvsige.blog.csdn.net,作者:祥子的小迷妹,版权归原作者所有,如需转载,请联系作者。

原文链接:lvsige.blog.csdn.net/article/details/108256670

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。