记一次vue+vuex+vue-router+axios+elementUI开发(三)
项目用到了状态管理工具 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开发(三)的更多相关文章
- 记一次vue+vuex+vue-router+axios+elementUI开发(一)
记录自己的vue开发之旅,方便之后查询 一.开发环境 1.安装node.js 自带npm https://nodejs.org/en/ 2. 全局安装vue-cli脚手架 npm install v ...
- 记一次vue+vuex+vue-router+axios+elementUI开发(二)
开发环境跟脚手架初始完毕后,我们开始配置axios请求后台接口 axios使用说明:https://www.kancloud.cn/yunye/axios/234845 1.本人是在脚手架中的sr ...
- vue全家桶router、vuex、axios
main.js import Vue from 'vue' import App from './App' import router from './router' import store fro ...
- day 87 Vue学习六之axios、vuex、脚手架中组件传值
本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的使用 Axios 是一个基于 promise 的 HT ...
- vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据
在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-se ...
- Vue(5)- axios、vuex
一.内容回顾 1.webpack(前端中工作,项目上线之前对整个前端项目优化) - entry:整个项目的程序入口(main.js或index.js): - output:输出的出口: - loade ...
- day 84 Vue学习六之axios、vuex、脚手架中组件传值
Vue学习六之axios.vuex.脚手架中组件传值 本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的 ...
- 基于Vue+Vuex+Vue-Router+axios+mint-ui的移动端电商项目
第一步:安装Node 1.打开NodeJS的官网,下载和自己系统相配的NodeJS的安装程序,包括32位还是64位一定要选择好,否则会出现安装问题. 下载地址:https://nodejs.org/e ...
- vue 组件开发、vue自动化工具、axios使用与router的使用(3)
一. 组件化开发 1.1 组件[component] 在网页中实现一个功能,需要使用html定义功能的内容结构,使用css声明功能的外观样式,还要使用js定义功能的特效,因此就产生了一个功能先关的代码 ...
随机推荐
- person类与其子类在使用中的内存情况(含java的改写和c#的屏蔽)
JAVA 普通person类及调用代码: public class Person { public String xm; public int nl; public void setme(String ...
- Vert.x Web
https://vertx.io/docs/vertx-web/java/ Vert.x-Web是一组用于使用Vert.x构建Web应用程序的构建块.将其视为瑞士军刀,用于构建现代,可扩展的网络应用程 ...
- Navicat 破解版(操作非常简单)
Navicat 破解版(操作非常简单) 参考这位老哥的博客,之前试过好多个,只有这个是最简单有效的 https://blog.csdn.net/WYpersist/article/details/86 ...
- Java基础篇(中)
4.Java 关键字 下面列出了 Java 关键字.这些保留字不能用于常量.变量.和任何标识符的名称. 类别 关键字 说明 访问控制 private 私有的 protected 受保护的 public ...
- Palo Alto GlobalProtect上的PreAuth RCE
0x00 前言 SSL VPN虽然可以保护企业资产免受互联网被攻击的风险影响,但如果SSL VPN本身容易受到攻击呢?它们暴露在互联网上,可以可靠并安全地连接到内网中.一旦SSL VPN服务器遭到入侵 ...
- kbmmw 中的Boyer-Moore算法
kbmmw 5.10 版本中实现了一个非常好用的字符串搜索算法,即Boyer-Moore算法. 在用于查找子字符串的算法当中,BM(Boyer-Moore)算法是目前被认为最高效的字符串搜索算法, 它 ...
- ML-求解 SVM 的SMO 算法
这算是我真正意义上认真去读的第一篇ML论文了, but, 我还是很多地方没有搞懂, 想想, 缓缓吧, 还是先熟练调用API 哈哈 原论文地址: https://www.microsoft.com/en ...
- Django 之 rest_framework 响应器使用
Django 之 rest_framework 响应器使用 使用部分: 第一步:导入模块 from rest_framework.renders import BrowsableAPIRenderer ...
- 将Quartz.NET集成到 Castle中
原文:https://cloud.tencent.com/developer/article/1030346 Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB ...
- package的xml格式的改变
package.xml文件格式由1到2发生了一些变化: 格式2有如下一行: <package format="2"> 依赖也发生一些变化<depend> 格 ...