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请求访问,组件获取返回值

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

完整的 Vuex Store 流程如下: 1. 安装 Vuex:使用 npm 或 yarn 安装 Vuex 到你的项目中。 2. 创建 Store 实例:在应用程序的入口文件中引入 Vuex,并创建一个新的 Vuex Store 实例。在实例中定义 state、mutations、actions 和 getters。 3. 注入 Store:将创建的 Store 实例注入到根 Vue 实例中,以便在整个应用程序中访问和使用该 store。 4. 在组件中使用 Store:在组件中使用 `this.$store` 访问 Vuex Store 的各种方法和属性。 - 使用 `this.$store.state` 来获取状态数据。 - 使用 `this.$store.commit('mutationName', payload)` 来触发 mutation。 - 使用 `this.$store.dispatch('actionName', payload)` 来触发 action。 - 使用 `this.$store.getters.getterName` 来获取 getter 的值。 5. 在 mutations 中同步更改状态:在 mutations 中定义同步的方法,用于更改 state 中的数据。通过提交(commit)一个 mutation 来触发这些方法。 6. 在 actions 中处理异步操作:在 actions 中定义异步的方法,用于处理异步操作,并通过调用 mutations 中的方法来更改 state。 7. 使用 getters 派生状态:在 getters 中定义派生出一些状态的方法,通过调用这些方法来获取派生状态的值。 以上就是使用 Vuex Store 的完整流程。通过 Vuex,你可以更好地组织和管理应用程序的状态,并实现数据的共享和响应式更新。希望对你有所帮助!如果你还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值