项目用到了状态管理工具 Vuex  中文文档:https://vuex.vuejs.org/zh/guide/

大家都知道,vue中可用props将父组件的数据传递给子组件,但是有个问题,子组件一般不能修改父组件的数据,这时候vuex就派上用场

1、vuex 安装:npm install vuex --save

2、在src中新建一个store文件夹:本人目录结构如下:

 3、在main.js 中引入:

import store from './store'

new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})

 4、这里用到了vuex的modules

在store文件夹中的index.js 中引入modules中的模块,并导入到store中

import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
import account from './modules/account'
import user_list from './modules/userList'
import nav_router from './modules/navRouter' Vue.use(Vuex) // const debug = process.env.NODE_ENV !== 'production' export default new Vuex.Store({
modules: {
user,
account,
user_list,
nav_router,
},
// strict: debug,
})

5、modules 中的文件:

包含state、getter、actions、mutations。这里就不一一介绍了,文档里都有用法以及介绍。

import api from 'api/fetch'
import * as types from '../types' const state = {
token: '',
userName: localStorage.getItem('userName') ? localStorage.getItem('userName') : '',
role_id: sessionStorage.getItem('role_id') ? sessionStorage.getItem('role_id') : '',
} const getters = {
userName: state => {
return state.userName
},
roleId: state => state.role_id
} const actions = {
userLogin({ commit }, palyload) {
return api.Login(palyload)
.then( res => {
localStorage.setItem('user_token_key', res.data.token)
localStorage.setItem('userName', res.data.username)
sessionStorage.setItem('role_id', res.data.role_id)
commit(types.USER, res.data)
return res
})
}
} const mutations = {
[types.USER](state, datas) {
state.userName = datas.username
state.token = datas.token
state.role_id = datas.role_id
}
} export default {
state,
getters,
actions,
mutations,
}

6、在组件中如何获取vuex中的数据呢或者怎么触发vuex的钩子呢,以state为列子。

  本人在vue组件中获取state,主要用2中方式

  1、vuex提供的mapState: 在组件中

    

import { mapState } from 'vuex'

computed: {
...mapState({
totalItem: state => state.user_list.user_list_totalItem,
user_list_loading: state => state.user_list.user_list_loading,
})
},

  2、在组件中用this.$store.user.state 访问(这里要注意用了modules 之后要在user modules上访问state,否则访问的为undefined)

  3、其他的钩子都有对应的触发方式,可前往文档中了解

记一次vue+vuex+vue-router+axios+elementUI开发(三)的更多相关文章

  1. 记一次vue+vuex+vue-router+axios+elementUI开发(一)

    记录自己的vue开发之旅,方便之后查询 一.开发环境 1.安装node.js  自带npm https://nodejs.org/en/ 2. 全局安装vue-cli脚手架 npm install v ...

  2. 记一次vue+vuex+vue-router+axios+elementUI开发(二)

    开发环境跟脚手架初始完毕后,我们开始配置axios请求后台接口   axios使用说明:https://www.kancloud.cn/yunye/axios/234845 1.本人是在脚手架中的sr ...

  3. vue全家桶router、vuex、axios

    main.js import Vue from 'vue' import App from './App' import router from './router' import store fro ...

  4. day 87 Vue学习六之axios、vuex、脚手架中组件传值

      本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的使用 Axios 是一个基于 promise 的 HT ...

  5. vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据

    在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-se ...

  6. Vue(5)- axios、vuex

    一.内容回顾 1.webpack(前端中工作,项目上线之前对整个前端项目优化) - entry:整个项目的程序入口(main.js或index.js): - output:输出的出口: - loade ...

  7. day 84 Vue学习六之axios、vuex、脚手架中组件传值

    Vue学习六之axios.vuex.脚手架中组件传值   本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的 ...

  8. 基于Vue+Vuex+Vue-Router+axios+mint-ui的移动端电商项目

    第一步:安装Node 1.打开NodeJS的官网,下载和自己系统相配的NodeJS的安装程序,包括32位还是64位一定要选择好,否则会出现安装问题. 下载地址:https://nodejs.org/e ...

  9. vue 组件开发、vue自动化工具、axios使用与router的使用(3)

    一. 组件化开发 1.1 组件[component] 在网页中实现一个功能,需要使用html定义功能的内容结构,使用css声明功能的外观样式,还要使用js定义功能的特效,因此就产生了一个功能先关的代码 ...

随机推荐

  1. java手写多级缓存

    多级缓存实现类,时间有限,该类未抽取接口,目前只支持两级缓存:JVM缓存(实现 请查看上一篇:java 手写JVM高性能缓存).redis缓存(在spring 的 redisTemplate 基础实现 ...

  2. Node.js 连接 MongoDB数据库

    安装指令:npm install mongodb var mongodb = require("mongodb");// console.log(mongodb); var Mon ...

  3. Python学习日记(三十六) Mysql数据库篇 四

    MySQL作业分析 五张表的增删改查: 完成所有表的关系创建 创建教师表(tid为这张表教师ID,tname为这张表教师的姓名) create table teacherTable( tid int ...

  4. Linux下设置Nginx开机自启

    1.本地环境 [root@dev ~]#cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 2.在/etc/init.d创建ngi ...

  5. JVM垃圾收集算法之清除算法

    最近看了一些大佬的博文,文中提到说:学习知识不能一味的死学滥学,在学之前要明白为什么要学这个知识,在实际的应用中怎么运用这个知识.我觉得说的很对,很多时候我学习确实是了解了这是什么原理,但是要说到实际 ...

  6. php的类使用样例

    这个demo.差不多php的类的主要知识点都用到了. public,private关键字, namespace,use命令空间, require导入, interface复用, abstract抽象类 ...

  7. Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect date value

    Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect date value: '154 ...

  8. Access denied for user '密码'@'192.18.0.0' (using password: YES)

    Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.6:generate (default- ...

  9. Gym100739H Hard Molecules

    Hard Molecules 给定一个连通图中每个点的度数,求一个满足条件的图,图可以有重边,不能有自环. n<=5000, di<=109 题解 如果不要求图连通,那么只需要判断 \[ ...

  10. python预课06 基于百度大脑AI的人工智能,百度颜值检测,语音合成与识别

    百度大脑: 如下图,百度开放了许多人工智能接口可以使用,先注册一个百度大脑账户 点击创建应用,选择需要的功能,如人脸识别,语音识别等 点击查看文档,可以查看功能对应语言的方法,参数.首先在CMD命令下 ...