这篇文章给大家介绍的内容是关于vuex模块化和命名空间的实例代码 ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

因为Vuex Store是全局注册的,不利于较大的项目,引入模块分离业务状态和方法,引入命名空间解决不同模块内(getters,mutaions,actions)名称冲突的问题

首先建立一个模块 ./store/modules/sample.js

import SampleAPI from '@/api/sample-api-proxy.js'

import { _AjaxUrl } from '@/store/constants'

const state = {

all: []

}

const mutations = {

resolve (state, payload) {

for (let item of payload) {

state.all.push(item)

}

}

}

const getters = {

allstr (state) {

return state.join(',')

}

}

const actions = {

async init ({commit,state}, pid) {

await SampleAPI.get(_AjaxUrl + '/api/game/all', params: {pid}).then((res) => {

state.all = res.all

commit('resolve', res.data)

})

}

}

export default {

namespaced: true,

state, mutations, getters, actions

}

./store/index.js 注入模块

import Vuex from 'vuex'

import sample_module from './modules/sample'

import other_module from './modules/other'

export default new Vuex.Store({

//全局Store对象

mutations,

actions,

state,

//模块

modules: {

sample: sample_module,

other: other_module

}

})

启动程序(main.js)中注册 store 到根组件

import Vue from 'vue'

import Vuex from 'vuex'

Vue.use(Vuex)

new Vue({

el: '#app',

data() {

return { rootParam: 'test' }

},

store,

router,

template: '',

components: { Home }

})

页面组件(./components/sample.vue)中声明并调用

  • {{item}}

    删除

{{all2str}}

@import '~style/common.styl'

nospace()

margin 0

padding 0

height(h)

height unit(h, 'px')

line-height unit(h, 'px')

.sample-ul

list-style-type none

@nospace

li

display block

height(20)

&:hover

background-color #fcc

import { createNamespacedHelpers, mapState } from 'vuex'

const { mapActions, mapGetters, mapMutations } = createNamespacedHelpers('sample')

const { mapActions: mapOtherActions, mapGetters: mapOtherGetters } = createNamespacedHelpers('other')

export default{

data() {

return {

}

},

computed: {

...mapState({

all : state => state.sample.all

}),

...mapGetters(['all2str']),

...mapOtherGetters(['test'])

},

methods: {

...mapActions(['loadDataAsync']),

...mapMutations(['removeItem']),

...mapOtherMutations(['testing'])

},

created() {

const pid = this.$route.query.pid

this.loadDataAsync(keep, pid)

}

}

推荐使用对象展开运算符将 mapMutations,mapGetters,mapActions,mapState 混入到页面组件,页面仅用于交互体验,不要参杂过多的业务逻辑和状态

通过 createNamespacedHelpers 映射到命名空间

项目结构:

├── index.html

├── main.js

├── api

│ ├── sample-api-proxy.js

│ └── ...

├── components

│ ├── sample.vue

│ └── ...

└── store

├── index.js

├── actions.js

├── mutations.js

├── state.js

└── modules

├── sample.js

└── other.js

相关推荐:

vuex的命名空间有哪些_vuex模块化和命名空间的实例代码相关推荐

  1. JS~~~ 前端开发一些常用技巧 模块化结构 命名空间处理 奇技淫巧!!!!!!...

    前端开发一些常用技巧               模块化结构       &&&&&     命名空间处理 奇技淫巧!!!!!!2016-09-29    17 ...

  2. python命名空间特性_PHP关键特性之命名空间实例

    PHP关键特性之命名空间实例 //代码会报错,在命名空间内部,假如无法找到当前命名空间下的类,则会报错 //$obj = new ArrayObject(array(1)); $obj = new \ ...

  3. 单片机实现模块化编程:思维+实例+系统教程(实用程度令人发指)

    单片机怎么实现模块化编程?思维+实例+系统教程(实用程度令人发指) \\\插播一条:文章末尾有惊喜哟~/// 在刚初始从事研发工作的那几年,我主要做单片机软件开发的工作,虽然功能吧都能实现,但是总觉得 ...

  4. vuex的命名空间有哪些_Vuex在vue路由器中访问命名空间模块的getter

    我试图通过检查用户是否经过身份验证来保护我的路由,这是示例路由: { path: '/intranet', component: search, meta: { requiresAuth: true ...

  5. Vuex使用以及模块化\namespaced 命名空间

    官方文档 Mutation | Vuex 在vue3中使用vuex 4.x  在vue3中使用vuex 4.x vuex怎么传递数据到modules中,并获取数据 - 简书 vuex namespac ...

  6. php 函数有命名空间吗_解析 ThinkPHP 的命名空间

    php中文网最新课程 每日17点准时技术干货分享 大家都知道由于PHP语法里不支持函数重载机制,如果一个应用里有两个同名的方法,怎么办呢? 在Yii 框架为了避免名字重复引起问题,全部的类前边都有 C ...

  7. oracle命名空间使用,揭秘ADO.NET OracleClient命名空间对象

    大家都知道随着技术的发展,访问数据库的方式也很多,不知道大家喜欢用什么方法去访问数据库呢?先给大家介绍常见的几种:开放数据库互联(ODBC).数据访问对象(DAO).远程数据对象(RDO).Activ ...

  8. python elementtree 命名空间_用Python中的命名空间通过‘ElementTree’解析XML

    莫回无 注对于Python的ElementTree标准库来说,这是一个有用的答案,而不需要使用硬编码的命名空间.要从XML数据中提取命名空间的前缀和URI,可以使用ElementTree.iterpa ...

  9. java list 命名空间,Spring JAVA 不同类加载器命名空间的理解

    以前一直有这样一个疑惑: 都说在JAVA中,由不同类加载器加载的类在虚拟机中位于不同的命名空间下,不同命名空间下的类相互不可见. 这让我产生了一个迷惑:如果有一个类A使用了java.util.List ...

最新文章

  1. Exchange 2013防止数据丢失DLP预览
  2. S/4HANA CLOUD 年度九大新功能(2020)
  3. Linux防火墙设置-DNS服务器篇
  4. js: live和die,bind和unbind
  5. Nginx 过滤模块
  6. K8s入门教程|这个给集群搞硬装的才是幕后英雄
  7. 删除节点命令removeNode
  8. 中介者模式php,PHP设计模式之中介者模式
  9. 【java与智能设备】01_2Android简介与环境搭建——开发环境
  10. VAssistX的卸载方法
  11. 在线预览 PDF 文档插件 PDFObject.js
  12. PostgreSQL12中文手册
  13. 二级C语言打不开考生文件夹,注意:下面出现的“考生文件夹”均为c:\wexam\25160001。 (1) 在考生文件夹下有一个工程文件sjt3.vbp - 赏学吧...
  14. Linux 下重新挂载分区方法
  15. 一个简单的点赞功能的实现
  16. 欧奈尔RPS曲线的编制方法这次终于成功了
  17. linux grep正则表达式与grep用法详解
  18. 关于class not fount的错误
  19. 卡梅隆大学计算机博士毕业,卡梅隆大学你了解吗?
  20. linux rm r是什么格式,linux rm 命令作用哪些使用教程

热门文章

  1. Spring boot的Restful风格CRUD
  2. Tomcat配置Web虚拟目录
  3. Java 多线程启动为什么调用 start() 方法而不是 run() 方法?
  4. 什么时候用抽象?什么时候用接口?
  5. Java IO流--练习2
  6. LeetCode19删除链表的倒数第N个节点20有效的括号
  7. 2019CCPC网络选拔赛签到题题解
  8. Firetruck(DFS+回溯)
  9. java解码base64的png图片_使用PHP对图片进行base64编码和解码(png、jpg,声音、视频)...
  10. 如何在ubuntu下安装detectron2_Anaconda中安装Cascade RCNN(Detectron)的若干问题