引入 vuex 管理状态

在vue和react全家桶的学习中,我一直在思考哪些数据应该给vuex来管理,哪些不用,在学习Redux时看到的话

"如果你不知道是否需要 Redux,那就是不需要它。" "只有遇到 React 实在解决不了的问题,你才需要 Redux 。"

无论何时我们都要去努力降低项目的复杂度,软件的维护成本远远大于开发成本,特别是在这个遍地框架搭积木的时代。

废话不说,我目前的经验,除了全局的数据,其它的都在各自组件内完成吃喝拉撒的生命周期,我们先来学vuex的知识。

安装

$ npm install vuex --save

在项目目录新建 store 目录

新建index.js 我们暂且不会大量的使用vuex,所以创建这一个文件就行了,不用把他的核心概念拆成多个文件

上代码

import Vue from 'vue'
import Vuex from 'vuex'
import router from '@/router'

Vue.use(Vuex)

const state = {
  get userinfo () {
    let userinfo = JSON.parse(localStorage.getItem('userinfo'))
    if (!userinfo) {
      router.replace({
        path: 'login',
        query: {redirect: router.currentRoute.fullPath}
      })
    }
    return userinfo
  },
  get lang () {
    return localStorage.getItem('lang') || 'cn'
  }
}

const actions = {
}

const getters = {
  getUserinfo (state) {
    return state.userinfo
  }
}

const mutations = {
  setUser (state, data) {
    console.log(data)
    localStorage.setItem('userinfo', JSON.stringify(data.userinfo))
    localStorage.setItem('token', data.token)
  },
  setLang (state, data) {
    localStorage.setItem('lang', data)
  }
}

export default new Vuex.Store({
  state,
  getters,
  actions,
  mutations
})

我们用它来管理语言、用户信息和token

记得前面国际化那章吧,我们需要一个语言切换的组件

<template>
    <el-select v-model="$store.state.lang" placeholder="请选择" @change="setLanguage">
        <el-option :label="$t('main.lang_cn')" value="cn" />
        <el-option :label="$t('main.lang_en')" value="en" />
    </el-select>  
</template>

<script>
export default {
  methods: {
    setLanguage (value) {
      this.$store.commit('setLang', value)
      this.$i18n.locale = value
    }
  }
}
</script>

通过 $store.state 去访问 通过 $store.commit 去设置

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,138评论 25 709
  • 目录 组件化 组件通信 状态管理 Vuex 是什么 Vuex 有什么特点 Vuex 解决了什么问题 什么类型的数据...
    前端小华子阅读 2,020评论 0 16
  • 前言 本文 有配套视频,可以酌情观看。 文中内容因各人理解不同,可能会有所偏差,欢迎朋友们联系我讨论。 文中所有内...
    珍此良辰阅读 11,981评论 23 111
  • 落日余晖彩霞绕, 暖暖斜阳光千条。 狂风起舞青叶动, 人生美景看明朝!
    无名传阅读 196评论 0 0
  • 2016年11月28日下午摄于宁波市江北消防大队……
    光画阅读 319评论 0 1