美文网首页
vuex@4模块化的使用,以及解决空间命名冲突问题

vuex@4模块化的使用,以及解决空间命名冲突问题

作者: 娇娇_5038 | 来源:发表于2022-01-16 10:21 被阅读0次

1.vuex是什么?

1-1 vuex可以理解为公共仓库,我们可以把公共的数据,方法放到里面,所有的组件都可以调取

其数据和方法

1-2 但是vuex的数据一刷新就没了,我们可以用本地存储的方式vuex数据改变的状态

2.vuex的属性有哪些?

. state 

存放公共的数据

.mutations  

存放一些方法,这些方法可以用来改变state的数据, 如果我们想要改变state的数据,需要用mutations的方法 vuex提供了commit()方法 ,mutations是同步执行

.actions

我们上次说mutations的方法是同步执行的,如果想把处理数据的方法改成处理异步方法,需要用actions,简单说是异步操作数据,但是还是得通过mutations来操作,因为actions不能直接改变state的数据  vuex提供了dispath()方法

.getters

比如我们想对Store仓库的state数据进行过滤,二次封装,一般的话可以写在computed里,但是如果好几个组件都用到这个过滤后的数据,我们可以在getter里对这个数据直接封装,这样数据数据可以共享,可以理解为store的计算属性

modules

我们在做项目的时候有很多模块功能,每个某块都子的state,mutions,actions,getters,为了更好的管理实现模块化 

3.那我们该如何在vue3的项目创建vuex以及使用vuex

3-1 安装vuex

cnpm i vuex@next  -S;

3-2  创建一个strore文件里,并创建一个index.js文件

import {createStore} from 'vuex'

import user from './user/user.js'

export default createStore({

  state:{

  name:'全局的name'

  },

  mutations:{

  change(state,value){

  state.name=value

  }

  },

  actions:{

  change(context,value){

  context.commit('change',value)

  }

  },

  getters:{

  newname:(state)=>{

return state.name

  }

  },

  modules: {

  user

  }

})

3-3创建子模块

export default {

namespaced: true,

state: {

name:'I,m is a userName'

},

mutations: {

change(state,value){

state.name=value

}

},

getters:{

name:(state)=>{

return state.name

},

newname(state, getters) {

    return getters.name

}

},

actions: {

change(context,value){

context.commit('change',value)

}

}

}

3-3 入口文件的调用

import { createApp } from 'vue'

import App from './App.vue'

import store from './store'

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

3-4 在组件里的使用

3-4-1:需要引进useStrore 

const store=useStore();

3-4-2:模块化的mutations方法的调用  

store.commit('user/change',value);

3-4-3:非模块化mutations方法调用

store.commit('change',value);

3-4-4:模块化的actions方法的调用  

store.dispatch('user/change',value);

3-4-5:非模块化mutations方法调用

store.dispatch('change',value);

3-4-6:获取模块化的getters的方法

let userName=computed(()=>{

return store.getters['user/newname']

})

3-4-7:获取非模块的getters的方法

let global=computed(()=>{

return store.getters.newname

});

<template>

<p>

{{global}}

<button @click="globalName('222')">mutations改变全局的name</button>

<button @click="chageName('55555')">actions改变全局的name</button>

</p>

<p>

{{userName}}

<button @click="changuserName('3333')">

mutations改变局部的name

</button>

<button @click="changeUser('8888')">

actions改变局部的name

</button>

</p>

</template>

<script>

import {ref,computed} from 'vue'

import {useStore} from 'vuex'

export default{

setup(){

const store=useStore();

let global=computed(()=>{

return store.getters.newname

});

let userName=computed(()=>{

return store.getters['user/newname'];

});

//通过mutations的方法改变数据

let globalName=(value)=>{

store.commit('change',value)

}

//通过mutations的方法改变数据

let changuserName = (value)=>{

store.commit('user/change',value)

}

//通过actions的方法改变数据

let chageName=(value)=>{

store.dispatch('change',value)

}

//通过actions的方法改变数据

let changeUser=(value)=>{

store.dispatch('user/change',value)

}

return{

global,

userName,

globalName,

changuserName ,

chageName,

changeUser

}

}

}

</script>

<style>

</style>

相关文章

  • vuex@4模块化的使用,以及解决空间命名冲突问题

    1.vuex是什么? 1-1 vuex可以理解为公共仓库,我们可以把公共的数据,方法放到里面,所有的组件都可以调取...

  • ESModule

    模块化解决的问题 命名冲突(命名空间来解决)采用自执行函数的方式 (解决代码的高内聚 低耦合问题) 模块的几种规范...

  • esmodule规范

    模块化解决的问题:命名冲突(命名空间来解决)采用自执行函数的方式 (解决代码的高内聚 低耦合问题) 模块的几种规范...

  • 模块化

    1.为什么要使用模块化 1.解决命名冲突。当代码达到一定规模,功能很多的时,命名冲突就会出现,模块化可以很好的解决...

  • Vue前端工程化-模块化

    1 - 模块化概述 传统开发模式的主要问题:① 命名冲突,② 文件依赖 通过模块化解决上述问题: 模块化就是把单独...

  • 模块化(CommonJS & AMD & CMD)

    为什么要使用模块化 目的: 解决命名冲突的问题 解决依赖管理的问题 使代码的可读性更高 代码解耦提高复用性 CMD...

  • 模块化

    1. 为什么要使用模块化? 最主要的是解决命名冲突、解决文件依赖这两大问题。 2.CMD、AMD、CommonJS...

  • 高级4

    题目1: 为什么要使用模块化?使用模块化有如下好处:解决命名冲突:文件过多时,容易早餐全局变量冲突依赖管理:当一个...

  • 包package和import

    package 1、为了解决类的命名冲突问题,在类名前加命名空间(包机制) 2、在java中使用paxkage语句...

  • AMD_CMD_RequireJS

    1、为什么要使用模块化? 解决命名冲突,当代码量很大的时候很容易有命名冲突。 实现依赖管理,代码量很大时候,代码之...

网友评论

      本文标题:vuex@4模块化的使用,以及解决空间命名冲突问题

      本文链接:https://www.haomeiwen.com/subject/opcfhrtx.html