解决因为数据变化,页面没有变化的情况 , 复习一下使用 vuex 的 modules

文件目录:

user.js

state: {
    token: '',
  },
mutations: {
  SET_LOCALSTORAGE(state, response){
    state.token = response.token
    localStorage.setItem('ACCESS_TOKEN', token)
  }
},
actions:{
	Login({ commit, dispatch }, data) {
		return new Promise((resolve, reject) => {
			接口 (返回 response)
			commit('SET_LOCALSTORAGE',response)  // 调用 mutations 里的 SET_LOCALSTORAGE
		})	
	})
}

getters.js :文件来自 modules 内文件(名),设置 getters ,方便二次计算,使用

const getters = {
    userInfo: state => state.user.token,(来自user.js)
    pageKey: state => state.app.pageKey,(来自app.js)
    number:state => state.app.number*2, (可重新计算处理)
}
export default getters

index.js: 使用 Vuex ,挂载

import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
import app from './modules/app'
import getters from './getters'

Vue.use(Vuex)
const store = new Vuex.Store({
  state: {
  },
 mutations: {
 },
  getters,
  modules: {
    user,
    app
  },
})
export default store
(引入mian.js 挂载到vue)

使用:

1、使用 getters 内的值

store.getters['pageKey'] 

2、调用 mutations 内的方法,设置 store 的值

store.commit('app/SET_PAGEKEY', new Date().getTime())

3、使用 actions 内 Login 方法

user/Login : 该文件下的, 
store.dispatch('user/Login') // 注意写法,是(文件/方法)
.then((res) => { // 通过返回数据进行其他操作
  if(res) {
    console.log(res,'重新获取token')
    window.location.reload()
  }
})

解决因为数据变化,页面没有变化的情况

页面:通过设置 key 解决因为数据变化,页面没有变化的情况
<div id="app" :key="pageKey">
    <transition :name="transitionName">
      <router-view v-if="isRouterAlive" />
    </transition>
 </div>

js 使用计算属性,在数据变化时候及时更新 key 

computed: {
    transitionName() {
      return this.$store.state.direction || ''
    },
    pageKey() {
      return store.getters['pageKey']  // 因为放到了 getters ,直接使用 ['pageKey'] ,否则  ['app/pageKey']
    }
  },
相关推荐
vvvae123412 分钟前
JavaScript 前端开发操作指南
开发语言·javascript·ecmascript
前端Hardy1 小时前
HTML & CSS 魔法秀:打造翻转卡片登录注册页面
javascript·css·html
努力挣钱的小鑫1 小时前
【Vue3】弹窗添加鼠标hover上边缘左、下的的拉伸宽度高度操作
javascript·vue·计算机外设
hvinsion1 小时前
HTML 霓虹灯开关效果
前端·html
顾平安1 小时前
JS 预编译代码实例分析
前端·js
雾恋1 小时前
leaferjs元素的基本使用
前端·javascript·vue.js
好奇的菜鸟2 小时前
Vue.js 实现用户注册功能
前端·javascript·vue.js
是程序喵呀2 小时前
vue安装步骤
前端·javascript·vue.js
前端Hardy2 小时前
HTML 中 a 标签跳转问题总结:从框架页面跳转的困境与突破
前端·javascript·html
@PHARAOH2 小时前
HOW - React 状态模块化管理和按需加载(一) - react-redux
前端·javascript·react.js·redux