vuex整个流程

vuex是存储状态的管理工具,在较大的项目里会用到,如果是小项目反而不建议使用,因为用的过程会比较繁琐。这里简单讲讲state,mutations,getters,actions在vuex使用中的流程
首先大家都知道vuex是在store文件下面index.js文件写的。但是如果项目很大,有很多不同的模块都要用vuex写,全写在index.js不免显得杂乱。所以应该在store文件下新建自己的模块,然后在index.js里面引入,具体操作如下:
在这里插入图片描述
然后在index.js文件里引入,写在modules里,如下

import Vue from 'vue'
import Vuex from 'vuex'

import tuiKuanStore from "@/store/tuiKuanStore";

Vue.use(Vuex)
const store = new Vuex.Store({
    state: {},
    mutations: {},
    actions: {},
    getters:{},
    modules: {
      tuiKuanStore,
    }
  })
  export default store

下面分别介绍一下state,actions,mutations,getters吧。
state:用于存放数据
actions:做出的某种行为,得到数据提交到mutations里面,它不做数据的修改
mutations:修改数据的地方
getters:返回state的数据
下面举两个案例
一、在页面点击按钮跳转页面,改变状态:

const state={
	//存个初始状态(随便啥都行)
    add_or_alter:0
}
const actions={
    //提交到mutations里处理,因为他没有要获取的数据,且它不能直接修改数据,所以必须提交到mutations
    getAddAdd_or_alterAction({commit}){
        commit('AddAdd_or_alter')
    }
}
const mutations={
	//更改数据,注意方法名要与提交的名字一样
    AddAdd_or_alter(state){
        state.add_or_alter=1
    }
}
const getters={
	//返回数据
    getAdd_or_alter(state){
        return state.add_or_alter
    }
}

==========================================
//A组件里
<router-link to="B组件">
	<el-button type="success" @click="addbaodan" class="addbaoxianAll">添加</el-button>
</router-link>

<script>
export default {
  name: "baoxianManage",
  methods:{
  //派发actions里面的方法,actions的方法又是提交到mutations里去改变的数据,这时数据已经被改变
  	addbaodan(){
      this.$store.dispatch("getAddAdd_or_alterAction")
    }
  }
}
</script>

======================================
//B组件里
<script>
import {mapGetters} from "vuex"	  //想要获取数据必须引入mapGetters
export default {
  name: "baoxianManage",
  computed: {
  //获取getters的数据,如果有多个获取方法:...mapGetters(["getAdd_or_alter", 'getBaoXianGongSiList','getbaoxainshouyingxiang'])
    ...mapGetters(["getAdd_or_alter"])
  },
  //如果要在次页面根据这个状态做一定反应,如根据不同状态显示不同东西,就把getAdd_or_alter当成属性一样用
  created() {
	   if(this.getAdd_or_alter===1){
	   		console.log('哈哈')
	   }
   }
}
</script>

二、用vuex做axios请求获取数据,在页面做出渲染

const state={
	 baoxian:[]
}
const actions={
    getbaoxainListAction({commit}){
        return new Promise((resolve, reject) => {
            console.log(this.$api)
            Axios.post(api.wang.baoXianList).then((res)=>{
                console.log(res)
                commit('boxianList',res.data.data.list)
                resolve('')
            })
        })
    }
}
const mutations={
	boxianList(state,baoxian){
        state.baoxian=[...baoxian]
    }
}
const getters={
	getBaoxianList(state){
        return [...state.baoxian]
    }
}

==========================================
//组件里
<script>
import {mapGetters}  from "vuex"
export default {
  name: "baoxianManage",
  data(){
    return{
      List:[]
    }
  },
  computed:{
    ...mapGetters(['getBaoxianList'])
  },
  created() {
  //赋值完成,在页面直接使用就行
    this.$store.dispatch('getbaoxainListAction').then(()=>{
      this.List=this.getBaoxianList
    })
  }
}
</script>

这里获取数据必须用异步,具体情况请看我另一篇文章 Vuex请求访问,组件获取返回值

以上两个案例大家多看看,用几遍就会了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值