所有分类
  • 所有分类
  • 后端开发
前端新宠Vuex解密:State、Mutations、Actions,一键掌握

前端新宠Vuex解密:State、Mutations、Actions,一键掌握

官方提供的状态管理库,它采用了集中式存储管理应用的所有组件的状态,并以相应的规则保证状态的一致性。进行访问和操作,可以更加方便和快捷地操作和维护模块的状态和数据。可以帮助我们有效地管理和共享应用程序中的各种状态值,提高代码的可维护性和可扩展

前端真的让人头疼,程序越来越复杂。所以,我们要盯着应用的状态。你知道最近很火的那个Vue.js吗?它还有个超级好用的工具叫做Vuex,专门用来管理组件状态的。今天我就来给你讲讲Vuex到底是什么,怎么用,一起来学!

分离业务逻辑和状态管理

npm install vuex --save
import Vuex from 'vuex'
import Vue from 'vue'
Vue.use(Vuex)

创建 Vuex Store

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    },
    decrement(state) {
      state.count--
    }
  },
  actions: {
    incrementAsync(context) {
      setTimeout(() => {
        context.commit('increment')
      }, 1000)
    }
  },
  getters: {
    evenOrOdd(state) {
      return state.count % 2 === 0 ? 'even' : 'odd'
    }
  }
})
new Vue({
  el: '#app',
  store,
  computed: {
    count() {
      return this.$store.state.count
    },
    evenOrOdd() {
      return this.$store.getters.evenOrOdd
    }
  },
  methods: {
    increment() {
      this.$store.commit('increment')
    },
    decrement() {
      this.$store.commit('decrement')
    },
    incrementAsync() {
      this.$store.dispatch('incrementAsync')
    }
  }
})

在开始玩Vuex前,得首先来个store,也可以说是Vue的好朋友~这个store里面有很多宝贝,比如state(就是咱们的数据宝库啦)、mutations(就是那些同步修改的魔法)、actions(处理各种异步任务的能手)和getters(就像是个聪明的小算盘,会根据状态生成缓存)。

State 状态管理

你有听说过Vuex里那个名叫State的东东么?这就是我们用来保存APP随时可能变掉的数据滴。但是要记住,别乱改State,否则Vuex的响应系统可能会失灵喔。那么如果真的需要改?这时候就可以用到Vue.set这个神奇的小技巧,这样你的屏幕也能跟着一起变化!

Mutations 同步修改 State

变化,就像Vuex里面换衣镜那样,随便扭几下就能变化,简直察觉不出来。别管那么多,别折腾其他花样(比如异地同步什么的)或者搞出副作用来,这样才能保证状态清楚,一眼就看到哦~

Vue.set(state.obj, 'newProp', 123)

Actions 异步操作与提交 Mutations

有时我们需要做点费时的事,例如在网上填写表格之类。这时候Action就要上场,而且还有mutations小帮手帮你改改状态里的数据。Action就像百宝箱一样,先把信息全放进去,然后让mutations兄弟们一起搞定状态的每一处!

Getters 计算属性

前端新宠Vuex解密:State、Mutations、Actions,一键掌握

this.$store.commit('increment')   // 传入 mutation 的名称
this.$store.commit({
  type: 'increment',
  amount: 10    // 传入额外的参数
})

Getter其实和我们平时看到的计算器差不多,就是功能更全些。它能够自动更新库存数据,让你省去复杂的计算过程。以后再遇到类似的计算问题,只需打开Getter就能找到答案,方便快捷!

Module 模块化管理

actions: {
  incrementAsync(context) {
    setTimeout(() => {
      context.commit('increment')
    }, 1000)
  }
}

在组件中使用 Vuex

学习如何在Vuex中玩转组件首先要懂四个概念:state(状态)、mutations(改变)、actions(操作)和getters(获取)。其实不用担心,只要熟悉哪些叫mapState、mapMutation、mapActions和mapGetters的小帮手,就可以轻松搞定模块或全局状态中的数据了!

this.$store.dispatch('incrementAsync')

Vuex 的注意事项

用Vuex的话,有几点需要注意!首先,处理异步的时候,主要靠actions和mutations,记住它们的用法很重要!其次,用getters可以提高速度,这个功能挺实用的。还有就是,别忘了用mutations来改变状态,不能直接改state。只要掌握好这些,用Vuex就会变得简单很多,代码也更容易维护和扩展~

getters: {
  evenOrOdd(state) {
    return state.count % 2 === 0 ? 'even' : 'odd'
  }
}

哎呦说白了,Vuex就是Vue专门为我们这些码农打造的一个全能的状态管理神器,它对咱们整个项目的影响可是大得很!想了解为啥Vuex这么牛逼吗?赶紧来看文章!只要搞懂state、mutations、actions、getters以及module这几个关键词,你就可以轻松驾驭Vuex,管理并共享应用里的各种状态,让代码更清爽,编程更顺手。

你用过vuex吗?用的时候有没有什么困扰的地方呀?跟我分享下哈~

this.$store.getters.evenOrOdd

原文链接:https://www.icz.com/technicalinformation/web/javascript/2024/04/15499.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?