vuex module写法基本使用

1 篇文章 0 订阅

简单记录下不是很全,之前都是用的普通写法,具体请
看之前的博客,今天不忙,学习下module的写法,如有错误,
请大佬多指正目录结构
在这里插入图片描述
home.vue

<template>
  <div >
    <div>
        <div>
            主页年龄列表
        </div>
        <div v-for="(item,index) in  ageList
         :key="index" class="ageList"  	
         @click="clickList(item.age)">
            {{item.age}}
        </div>     
    </div>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
      return {
          ageList:[
              {age:11},
              {age:12},
              {age:13},
              {age:14},
              {age:15}
          ],
        setList :[
             {age:31},
             {age:32},
             {age:33},
             {age:34},
             {age:35}
        ]
      }
  },
  methods:{
      clickList(age){
      	触发mutation 注册事件(这么说好理解)
        this.$store.commit('ADD_AGE', age)
        this.$store.commit('SET_SONGLIST', this.ageList)
      }
  },
  mounted(){
    setTimeout(()=>{
    分发 Action,通过 store.dispatch 方法触发,
    因为mutation为同步,所以要荣国action进行异步操作
      this.$store.dispatch('upSongList', this.setList)
    },10000)
  }
}
</script>


list.vue

<template>
  <div >
    <div v-for="(item,index) in ageList" :key="index">
        {{item.age}}
    </div>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {
      ageList:[],

    }
  },
  mounted(){
  	从store中获取数组,初始化的时候获取的是home.vue中的ageList(
  	需要点击列表 进行设置),十秒后获取的是setList
    this.ageList = this.$store.state.list.songlist
  }
}
</script>

<style>

</style>

age.js

const ages = {
    state:{
        agea:0
    },
    mutations:{
        ADD_AGE:(state,agea)=>{
            state.agea=agea
        }
    },
    getters:{

    }
}
export default ages

list.js

const songList = {
    state:{
        songlist:[]
    },
    mutations:{
        SET_SONGLIST:(state,list)=>{
            state.songlist =list
        }
    },
    actions:{
    分发action,用于获取后台数据之后的操作,
    通过 store.dispatch 方法触发
        upSongList:({commit},list)=>{
            commit('SET_SONGLIST',list)
        }
    }
}
export default songList

index.js

import Vue from "vue";
import Vuex from 'vuex';
import persistedState from 'vuex-persistedstate' 
//数据本地持久化插件,在之前的博客中有 提到过
//require.context 方法使用,不了解的请参考文档
// https://webpack.js.org/guides/dependency-management/#requirecontext
const files = require.context('./module', true, /\.js$/)
const modules = files.keys().reduce((modules, path) => {
	const name = path.replace(/^\.\/(.*)\.\w+$/, '$1')
	const val = files(path)
	modules[name] = val.default
	return modules
  }, {})
Vue.use(Vuex);
const store= new Vuex.Store({
    modules,
  	plugins: [persistedState()]
})

export default store

页面效果如下
在这里插入图片描述
一个简单路由,两个组件切换,简单的代码我就不写了,如果有不对的地方,还请大佬指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值