1.store目录下生成index.js
import Vue from "vue";
import Vuex from "vuex";
import { HEADER } from './modules/mutationTypes';
import headerModules from './modules/header';
Vue.use(Vuex)
// 使用export封装代码,让外部可以引用
export default new Vuex.Store({
modules: {
[HEADER]: headerModules
}
})
 
2.store目录下新建modules存放具体某项配置
新建header.js存放基础配置
新建header.js存放基础配置
import {
USER_INFO, NOW_APP, SET_USER_INFO, SET_NOW_APP
} from './mutationTypes'
//1.state
//this.$store.state.header.nowApp.name
const state = {
userInfo: {
userName: '未知用户',
userId: '000000',
roleList: ['非法用户'],
email: '',
code: '000000'
},
// 汇总数据查询任务ID
nowApp: {}
}
//2.getters
const getters = {
[USER_INFO]: state => state.userInfo,
[NOW_APP]: state => state.nowApp
}
//3.actions
const actions = {
[SET_NOW_APP]({ commit }, data) {
commit(SET_NOW_APP, data)
}
}
//4.mutations
const mutations = {
[SET_USER_INFO](state, data) {
state.userInfo = data
},
[SET_NOW_APP](state, data) {
state.nowApp = data
}
}
export default {
namespaced: true, // 开启命名空间
state, // 共同维护的一个状态,state里面可以是很多个全局状态
getters, // 获取数据并渲染
actions, // 数据的异步操作
mutations // 处理数据的唯一途径,state的改变或赋值只能在这里
}
 
 
3.modules下新建mutationTypes.js存放常量配置,至此store目录下配置完成
//此文件存放vuex中mutation常量
// header模块
export const HEADER = 'header'
// getters
export const USER_INFO = 'USER_INFO'
export const NOW_APP = 'NOW_APP'
// mutations
export const SET_USER_INFO = 'SET_USER_INFO'
export const SET_NOW_APP = 'SET_NOW_APP'
 
4.main.js中将store挂载到当前项目的Vue实例中
import store from "./store";
new Vue({
el: '#app',
router,
store, //store:store 和router一样,将我们创建的Vuex实例挂载到这个vue实例中
render: h => h(App)
})
 
5.在组件中使用Vuex
<h2>vuex状态:{{ $store.state.header.nowApp.name }}</h2>

修改状态
<div><button class="btn" @click="setAppName">++++++</button></div>
<script>
import { mapActions } from "vuex"
import { HEADER, SET_NOW_APP } from "@/store/modules/mutationTypes"
export default {
methods:{
// 语法糖,调用store下header.js中3.actions修改状态信息
...mapActions(HEADER, {
// 相当于this.$store.dispatch('modifyName'),提交这个方法
setNowApp: SET_NOW_APP,
}),
setAppName(){
let defaultApp = {name:'nnnn'};
console.log(">>>>>",defaultApp);
this.setNowApp(defaultApp);
console.log(">>>>>",this.$store.state.header.nowApp.name);
},
//跳转
trunToB () {
this.$router.push({path: "/pages/userGroupDetail"}) // 路由跳转到详情页
}
}
}
 

7.Vuex的更多相关文章

  1. 关于Vue.js 2.0 的 Vuex 2.0,你需要更新的知识库

    应用结构 实际上,Vuex 在怎么组织你的代码结构上面没有任何限制,相反,它强制规定了一系列高级的原则: 应用级的状态集中放在 store 中. 改变状态的唯一方式是提交mutations,这是个同步 ...

  2. vuex复习方案

    这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.

  3. vuex 初体验

    vuex是vue的状态管理工具,vue进阶从es6和npm开始,es6推荐阮一峰大神的教程. vuex学习从官方文档和一个记忆小游戏开始.本着兴趣为先的原则,我先去试玩了一把-->. Vuex ...

  4. vuex(1.0版本写法)

    Vuex 是一个专门为 Vue.js 应用所设计的集中式状态管理架构. 官方文档:http://vuex.vuejs.org/zh-cn/  2.0和1.0都能在此找到 每一个 Vuex 应用的核心就 ...

  5. 关于Vue vuex vux 文档

    01. vue 链接 http://vuejs.org.cn/guide/ 02. vuex  ----->>状态管理模块儿<<------- https://vuex.vue ...

  6. vuex

    英文:(Introduction)中文:https://github.com/vuejs/vuex/issues/176(贡献者努力中)

  7. Vue 2.0 + Vue Router + Vuex

    用 Vue.js 2.x 与相配套的 Vue Router.Vuex 搭建了一个最基本的后台管理系统的骨架. 当然先要安装 node.js(包括了 npm).vue-cli 项目结构如图所示: ass ...

  8. Vue2.X的状态管理vuex记录

    记住上述的顺序情况:想要改变state,只能通过Mutation,虽然action可以直接改变state,这样会使每个状态可以方便的跟踪和记录(用Devtools跟踪) vue Method   -- ...

  9. 在vue1.0遇到vuex和v-model的坑

    事情是这样的,在开发项目的过程中我使用了vuex并且在store中定义了一个保存用户信息的对象 userInfo : { 'nickName' : '', // 昵称 'password' :'', ...

  10. vuex 笔记

    Vuex 笔记 一个简单的状态管理 单一数据源: const sourceOfTruth = {} const vmA = new Vue({ data: sourceOfTruth }) const ...

随机推荐

  1. 在vue2中按顺序调用多个接口,接收返回数据

    最近有一个点一个按钮调用多个接口,并且按顺序串行调用,根据后端返回的逻辑,区分接口之间的串行关系,前面的接口失败是否继续执行下面接口,有两种方式,都是循环调用接口,实现方式有点差别 第一种reduce ...

  2. k8s~service和deployment中的spec.selector

    service和deployment中的spec.selector 在 Kubernetes 中,Service 和 Deployment 的 spec.selector 在使用上是有一些不同之处的, ...

  3. vmware ESXi快速创建新的虚拟机

    ​准备工作:新虚拟机Win10 安装后,需要windows update,更新补丁到最新,关机.(本文案例win10-Amadeus) 在数据盘新建Win10-Users文件夹(可自定义) 复制win ...

  4. 【C#】【MySQL】【配置数据源】SSL Connection error 发生一个或多个错误。由于·意外的数据包格式,握手失败

    [编程语言]C# [数据库]MySQL [控件]SqlDataSource [问题描述]使用SqlDataSource远程连接数据库时,测试连接发生如下错误:"SSL Connection ...

  5. 3款.NET开源、功能强大的通讯调试工具,效率提升利器!

    前言 今天大姚给大家分享3款.NET开源.功能强大的通讯调试工具,帮助大家提高通讯调试的效率和准确性. LLCOM LLCOM是一个.NET开源的.功能强大的串口调试工具.支持Lua自动化处理.串口调 ...

  6. Qt编写可视化大屏电子看板系统24-模块2当月计划

    一.前言 延续分层模块化的设计思路,当月计划模块主要包括模具达成率.零件达成率.零件数.每日工序达成数5个子模块,其中模具达成率采用自定义控件环形图展示,比如计划多少达成多少,达成作为进度:零件达成率 ...

  7. Qt开源作品43-超级图形字体

    一.前言 对于众多的Qter程序员来说,美化UI一直是个老大难问题,毕竟这种事情理论上应该交给专业的美工妹妹去做,无奈在当前整体国际国内形式之下,绝大部分公司是没有专门的美工人员的,甚至说有个兼职的美 ...

  8. Qt Creator 5.0 发布

    我们很高兴地宣布 Qt Creator 5.0 的发布! 正如4.15 发布博文中所宣布的,我们将切换到语义版本控制方案,因此这是 Qt Creator 很长一段时间以来的第一次主要版本更新!不过不要 ...

  9. MySQL版本是8.0.3,数据库连接字符串都检查无误,驱动类名加不加cj都试过了,URL是否加时区、是否加useSSL都试过了,都无法正常登录进去!

    我在运行library这个web程序登录时(我的MySQL版本是8.0.3,数据库连接字符串都检查无误,驱动类名加不加cj都试过了,URL是否加时区.是否加useSSL都试过了,都无法正常登录进去!) ...

  10. Kaggle API使用范例

    kaggle.com/docs/api