Vue学习记录-状态管理
要解决的问题平时的系统开发中,基本都会碰到这个权限问题,需要根据用户的登录状态进行处理。最常见的情况就是“先登录,后使用”。除去打包成APP,无法看到连接外,如果地址栏里直接输入地址就能绕过登录的话,那就忒不安全了。 方案1:自己做一个状态管理具体的代码,我删掉了,所以这里只陈述一下过程 1. main.js里面,加一个var user = {didLogin:false},并在methods中添加一个方法changeUserAuth(isLogin){ user.didLogin = isLogin; }; 2. main.js里面,添加路由beforeEach,通过判断user.didLogin,进行next()或者next({name:'login}); 3. 子页面中如果要修改这个状态的话,通过方法进行修改,this.$root.changeUserAuth(true); 方案2:vuex正规军的做法,就是vuex了,通过他统一对全局变量进行管理。说一下具体的用法 1. 安装npm i vuex --save 2. 创建store.js(/ProjectPaht/src/vuex/store.js),并定义types(/ProjectPaht/src/vuex/types.js) /* store.js */import Vue from 'vue''vuex'import user from './modules/user' <span style="color: #008000">//<span style="color: #008000">用户
<span style="color: #000000"> Vue.use(Vuex) export <span style="color: #0000ff">default <span style="color: #0000ff">new<span style="color: #000000"> Vuex.Store({ /* types.js */
export const USER_INFO_UPDATE = 'USER_INFO_UPDATE';
3. 定义各个模块的数据(user.js) import * as types from '../types'const USER_INFO = 'userInfo'<span style="color: #000000">;
const state =<span style="color: #000000"> { const actions =<span style="color: #000000"> {
const getters =<span style="color: #000000"> { const mutations =<span style="color: #000000"> { export <span style="color: #0000ff">default<span style="color: #000000"> { 3. 更改store数据 页面跳转以后,就会执行到main.js的路由beforeEach中去了 './router''./vuex/store''vuex'
<span style="color: #0000ff">new <span style="color: #000000"> Vue({el: '#app'<span style="color: #000000">,router,store,template: ''<span style="color: #000000">,components: { App,},computed: mapState({ userInfo: ({user}) => user.userInfo,<span style="color: #008000">//<span style="color: #008000">从user.js中获取信息用于判断是否登录 <span style="color: #000000"> }),methods: { checkAuth: <span style="color: #0000ff">function<span style="color: #000000"> () { let {userid = ''} = <span style="color: #0000ff">this<span style="color: #000000">.userInfo; <span style="color: #0000ff">return userid.length > 0; <span style="color: #008000">//<span style="color: #008000">这里做的比较简单,只是通过userid进行的判断 <span style="color: #000000"> } } }) router.beforeEach((to,from,next) =><span style="color: #000000"> { 最后理一下数据流向1. 页面通过接口调用接口,完成账号验证; 2. 通过vuex修改store,这里具体起作用的是vuex/modules/user.js; 3. 进行页面跳转,会被router.beforeEach拦截,通过对store的判断,具体完成跳转(到登录、到下个页面) 因为之前用了Redux,所以vuex直接就用上了,没有任何难度。关于vuex的具体用法,还是参照一下官方文档吧 https://vuex.vuejs.org/
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |