vuex 的使用

vuex使用规则

统一管理数据

1.获取index文件定义的state

vuex来存的数据什么时候还要结合缓存?
项目跳外链的话vuex的数据都会消失,如果vuex存的数据不能及时再次获取,那么它需要缓存起来,以便再次给他复值

定义变量的文件
const state ={
  tokenId:'111111'
}
需要引入的那个文件,mapState其实就是state的地址(也可以直接使用this.$store.state调用)
 import {mapState} from 'vuex';
 
定义一个计算属性,在该页面可以直接使用引入的变量tokenId
computed:{
         ...mapState([
          "tokenId"
        ])
},
    mounted(){
        setTimeout(()=>{
            console.log(this.tokenId)
        },1000)

2.getters

getters类似于全局的computed。后端给我们数据不是我们想要的,需要组装一下,这个时候调用
当然也可以直接在页面里使用computed,当时如果多个页面都用到,去维护多个computed不明智
写法如下

export default {
  tokenIDs:(state)=>{   
    return `${state.tokenId} ${state.count}`;
  }
}

使用

import { mapGetters, mapState } from 'vuex'
  computed: {
    ...mapState(['count']),
    ...mapGetters(['tokenIDs']),
    counts () {
      return this.$store.state.count
    }
  }
  <p>{{tokenIDs}}</p> 

3.更改state里的值

调用import {mapMutations,mapActions} from 'vuex'(也可以直接使用this.$store.state赋值调用,最好不要直接改,不然定义state的意见就变低了)
    methods:{
      ...mapMutations([  //同步的
          'TOKEN'
      ]),
      ...mapActions([  //异步调用
          'getTOKEN'
      ])
    }
    在想调用的地方用this.TOKEN(data)调用
    附:mutation.js:
    import {
          TOKEN
        } from './types.js'
        export default {
          [TOKEN](state,res){
            state.tokenId=res;
          }
        };
        actions.js:
        import * as types from './types'
        export default {
          getTOKEN:({
            commit
          },res)=>{
            commit(types.TOKEN,res)
          }
        }
        
        
        简单区分同步还是异步调用 一般直接修改state的数据的,用mutation,异步的数据接口请求可以用actions
        
        this.TOKEN(11) = this.$store.commit('TOKEN',111)
        this.getTOKEN(11) = this.$store.dispatch('TOKEN',111)

vuex怎么实现热更替

vuex实现热更替,本质其实使用webpack的热更替

     if (module.hot) { //
    module.hot.accept([
      './state/state',  // 这里是对应的模块地址
      './mutation',
      './actions',
      './getters'
    ], () => {
      const newState = require('./state/state').default  // 采用的export default 的形式
      const newMutations = require('./mutation').default
      const newActions = require('./actions').default
      const newGetters = require('./getters').default

      store.hotUpdate({ // 启动热更替
        state: newState,
        mutations: newMutations,
        getters: newGetters,
        actions: newActions
      })
    })
  }
posted @ 2018-08-29 16:02  wings-lhw  阅读(174)  评论(0编辑  收藏  举报