Vuex的使用

骑猪看日落 2021-11-09 20:00 400阅读 0赞

(。^。) 来扯一扯Vuex呗~

Vuex:是一个专为vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

一.什么情况下使用vuex?

  1. 多个视图依赖于同一状态
  2. 来自不同视图的行为需要变更同一状态

二.Vuex核心概念

1.store(仓库):就是一个容器,它包含着应用中大部分的状态;状态存储是响应式的;不能直接改变store中的状态

2.state(状态):定义应用的单一状态树,用一个对象就包含了全部的应用层级状态

3.getter(派分的状态):抽离操作状态的逻辑,可被多组件使用

4.mutation(修改状态的唯一途径):要使改变状态可被记录,必须要commit一个mutation;mutation必须是同步更新状态

4.action(异步操作):异步操作产生结果;action提交的是mutation,而不是直接变更状态

三.例子

1.想要改变state,必须提交mutation

  1. import Vue from 'vue';
  2. import Vuex from 'vuex';
  3. Vue.use(Vuex);
  4. const state = {
  5. count:100
  6. }
  7. const mutations = {
  8. updateCount (state) {
  9. state.count += 1
  10. }
  11. }
  12. const store = new Vuex.Store({
  13. state,
  14. mutations
  15. })
  16. export default store;

调用handleUpdate方法进行改变

  1. handleUpdate(){
  2. this.$store.commit('updateCount')
  3. }

2.获取state中的值

(1)存在data中。存在data中的数据,当调用handleUpdate方法时,值不会改变,因此一般不使用此方法获取

  1. data () {
  2. return{
  3. n:this.$store.state.count
  4. }
  5. },

(2)直接获取

  1. <h2>直接获取:{
  2. {$store.state.count}}</h2>

(3)通计算属性获取

  1. computed:{
  2. m(){
  3. return this.$store.state.count
  4. }
  5. },

3.传值

推荐对象的写法,有利于扩展

  1. handleUpdate(){
  2. this.$store.commit('updateCount',{
  3. add:2
  4. })
  5. }
  6. const mutations = {
  7. updateCount (state,payload) {
  8. state.count += payload.add
  9. }
  10. }

4.getters实时监听state的变化

就像计算属性一样,getter的返回值会根据它的依赖被缓存起来,且只有它的依赖值发生改变才会被重新计算

  1. getters : {
  2. totals (state) {
  3. return state.shopList.reduce((n,item)=>n+item.count,0)
  4. }
  5. },
  6. <h2>统计总数:{
  7. {$store.getters.totals}}</h2>

5.action异步操作

  1. add(id){
  2. this.$store.dispatch('updateCountAction',{
  3. id
  4. })
  5. }
  6. const actions = {
  7. updateCountAction(context,params){
  8. //异步操作放这里
  9. setTimeout(() => {
  10. context.commit('updateCountById',params)
  11. },3000)
  12. }
  13. }

还是通过mutaion,而不是直接变更状态

  1. const mutations = {
  2. updateCountById(state,payload){
  3. state.count += payload.id
  4. }
  5. }

发表评论

表情:
评论列表 (有 0 条评论,400人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vuex使用

    9.1、理解vuex 1. 概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的

    相关 Vuex 使用

    Vuex > Vuex是一个针对Vue.js开发的状态管理模式。说简单点儿就是一个工具,可以管理(修改或设置)所有组件用到的数据,而不需要借助之前的event bus或者

    相关 Vuex使用

    前言 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,本文示例是基于vue-cli4创建的vue2项目。 简

    相关 vuex使用

    VUE + vuex的使用总结如下(查阅资料): 写在前面 本文旨在通过一个简单的例子,练习vuex的几个常用方法,使初学者以最快的速度跑起来一个vue + vue

    相关 Vuex使用

    (。^。) 来扯一扯Vuex呗~ Vuex:是一个专为vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方