美文网首页
5.手把手教你使用Vuex - 按属性进行拆分

5.手把手教你使用Vuex - 按属性进行拆分

作者: 木头就是我呀 | 来源:发表于2020-03-14 10:52 被阅读0次

😋 OK,看完以上的几篇文章,你应该明白了vuex是啥了,在项目中何时去使用了,并且怎么用心里大概也有个度啦,如果能达到这个效果,我觉得前几篇文章没有白写;如果你基于我的介绍有了自己的一些想法,欢迎评论到下方,我们一起讨论一下~ 🤗

🤯 接下来我们想象一下,目前我们介绍的store/index.js里面的内容是非常少的,如果你是一个稍微有些规格的项目,那么你将会得到一个成百上千行的index.js,然后查找一些东西就会非常费劲,我们建议你的一个文件内的行数尽量不要超过500行,不然对于调试来说没有好处。既然问题出来了,我们看一下怎么拆分一下。

  • 🤒 我们看到,一个store/index.js里面大致包含state/getters/mutations/actions这四个属性,我们可以彻底点,index.js里面就保持这个架子,把里面的内容四散到其他文件中。


    image.png
  • 🤖 最终的文件结构
    store
     |___index.js
     |___state.js
     |___mutations.js
     |___getters.js
     |___actions.js
    
    1. 拆出来state到state.js中
    const state = {
      loading: false,
      todoList : [
        {id:1,name:'11'},
        {id:2,name:'22'},
        {id:3,name:'33'},
      ],
      num: 0,
    }
    export default state
    
  • 2.拆出来mutations到mutations.js中
    const getters = {
      getListLength(state) {
        return state.todoList.length + ''
      },
    }
    export default getters
    
  • 3.拆出来mutations到mutations.js中
    const mutations = {
      setNumIs5(state){
        state.num = 5
      },
      setNumIsWhat(state,payload){
        state.num = payload.num
      }
    }
    export default mutations
    
  • 4.拆出来actions到actions.js中
    const actions = {
      setNum({commit},payload){
        return new Promise((resolve)=>{
          setTimeout(()=>{
            console.log('测试载荷---'+payload.id);
            commit('setNumIs5')
            resolve()
          },1000)
        })
      }
    }
    export default actions
    
  • 5.组装到index.js里面
    import Vue from 'vue'
    import Vuex from 'vuex'
    import state from './state'
    import getters from './getters'
    import mutations from './mutations'
    import actions from './actions'
    
    Vue.use(Vuex)
    
    const store = new Vuex.Store({
      state,
      getters,
      mutations,
      actions,
    })
    export default store
    
    1. 测试一下
    console.log(this.$store.getters.getListLength)
    this.$store.commit('setNumIs5')
    console.log(this.$store.state.num);
    await this.setNumAlias({id:'111'})
    console.log(this.$store.state.num);
    
image.png

🤓 以上就是简单的进行了按属性进行拆分store里面的代码,这样就比较清晰了哈,你需要加什么就去哪里加,大家各干各的,互不影响;当然,你完全可以不这么做,引用官方文档中的一句话,“需要多人协作的大型项目中,这会很有帮助。但如果你不喜欢,你完全可以不这样做”。我觉得说的很有道理。OK,接下来一个文章是来介绍当拆分后,方法名字的复用问题,这是我的理解啊,当然官方点的话,就是:‘常量替代 XXX 事件类型’,这究竟是什么,我们来一探究竟。

相关文章

网友评论

      本文标题:5.手把手教你使用Vuex - 按属性进行拆分

      本文链接:https://www.haomeiwen.com/subject/gxdmshtx.html