vuex的命名空间有哪些_vuex模块化和命名空间的实例代码
这篇文章给大家介绍的内容是关于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}}
删除
@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模块化和命名空间的实例代码相关推荐
- JS~~~ 前端开发一些常用技巧 模块化结构 命名空间处理 奇技淫巧!!!!!!...
前端开发一些常用技巧 模块化结构 &&&&& 命名空间处理 奇技淫巧!!!!!!2016-09-29 17 ...
- python命名空间特性_PHP关键特性之命名空间实例
PHP关键特性之命名空间实例 //代码会报错,在命名空间内部,假如无法找到当前命名空间下的类,则会报错 //$obj = new ArrayObject(array(1)); $obj = new \ ...
- 单片机实现模块化编程:思维+实例+系统教程(实用程度令人发指)
单片机怎么实现模块化编程?思维+实例+系统教程(实用程度令人发指) \\\插播一条:文章末尾有惊喜哟~/// 在刚初始从事研发工作的那几年,我主要做单片机软件开发的工作,虽然功能吧都能实现,但是总觉得 ...
- vuex的命名空间有哪些_Vuex在vue路由器中访问命名空间模块的getter
我试图通过检查用户是否经过身份验证来保护我的路由,这是示例路由: { path: '/intranet', component: search, meta: { requiresAuth: true ...
- Vuex使用以及模块化\namespaced 命名空间
官方文档 Mutation | Vuex 在vue3中使用vuex 4.x 在vue3中使用vuex 4.x vuex怎么传递数据到modules中,并获取数据 - 简书 vuex namespac ...
- php 函数有命名空间吗_解析 ThinkPHP 的命名空间
php中文网最新课程 每日17点准时技术干货分享 大家都知道由于PHP语法里不支持函数重载机制,如果一个应用里有两个同名的方法,怎么办呢? 在Yii 框架为了避免名字重复引起问题,全部的类前边都有 C ...
- oracle命名空间使用,揭秘ADO.NET OracleClient命名空间对象
大家都知道随着技术的发展,访问数据库的方式也很多,不知道大家喜欢用什么方法去访问数据库呢?先给大家介绍常见的几种:开放数据库互联(ODBC).数据访问对象(DAO).远程数据对象(RDO).Activ ...
- python elementtree 命名空间_用Python中的命名空间通过‘ElementTree’解析XML
莫回无 注对于Python的ElementTree标准库来说,这是一个有用的答案,而不需要使用硬编码的命名空间.要从XML数据中提取命名空间的前缀和URI,可以使用ElementTree.iterpa ...
- java list 命名空间,Spring JAVA 不同类加载器命名空间的理解
以前一直有这样一个疑惑: 都说在JAVA中,由不同类加载器加载的类在虚拟机中位于不同的命名空间下,不同命名空间下的类相互不可见. 这让我产生了一个迷惑:如果有一个类A使用了java.util.List ...
最新文章
- Exchange 2013防止数据丢失DLP预览
- S/4HANA CLOUD 年度九大新功能(2020)
- Linux防火墙设置-DNS服务器篇
- js: live和die,bind和unbind
- Nginx 过滤模块
- K8s入门教程|这个给集群搞硬装的才是幕后英雄
- 删除节点命令removeNode
- 中介者模式php,PHP设计模式之中介者模式
- 【java与智能设备】01_2Android简介与环境搭建——开发环境
- VAssistX的卸载方法
- 在线预览 PDF 文档插件 PDFObject.js
- PostgreSQL12中文手册
- 二级C语言打不开考生文件夹,注意:下面出现的“考生文件夹”均为c:\wexam\25160001。 (1) 在考生文件夹下有一个工程文件sjt3.vbp - 赏学吧...
- Linux 下重新挂载分区方法
- 一个简单的点赞功能的实现
- 欧奈尔RPS曲线的编制方法这次终于成功了
- linux grep正则表达式与grep用法详解
- 关于class not fount的错误
- 卡梅隆大学计算机博士毕业,卡梅隆大学你了解吗?
- linux rm r是什么格式,linux rm 命令作用哪些使用教程
热门文章
- Spring boot的Restful风格CRUD
- Tomcat配置Web虚拟目录
- Java 多线程启动为什么调用 start() 方法而不是 run() 方法?
- 什么时候用抽象?什么时候用接口?
- Java IO流--练习2
- LeetCode19删除链表的倒数第N个节点20有效的括号
- 2019CCPC网络选拔赛签到题题解
- Firetruck(DFS+回溯)
- java解码base64的png图片_使用PHP对图片进行base64编码和解码(png、jpg,声音、视频)...
- 如何在ubuntu下安装detectron2_Anaconda中安装Cascade RCNN(Detectron)的若干问题