5分钟上手使用vuex,vuex状态管理,vuex遇到的坑

简介: 5分钟上手使用vuex,vuex状态管理,vuex遇到的坑

很多刚学习vue的人对于全局变量管理工具vuex都觉得很神秘,今天就用很通俗的大白话协助大家理解一下vuex,作者的vue项目使用vue脚手架搭建的,用脚手架搭建的项目会在src文件夹下有一个store文件,打开store文件,会看到里边有index.js,getters.js,actions.js这几个js文件(如果没有的话就自己建一下)。那么vuex的核心就在这几个文件当中,其实vuex最核心的就四部分:state(全局变量),mutations(修改全局变量的方法),actions(用于提交mutations的方法),getters(其他vue组件读取state变量的中间变量,作者理解,该处相当于导出了state)。接下来开始上代码进行分析。

store.js文件中代码

该部分代码定义了全局变量state,并在mutations中定义了修改state的方法

import Vue from 'vue'  // 首先导入vue
    import Vuex from 'vuex'  // 导入vuex
    import * as actions from './actions'  // 将actions方法导入
    import * as getters from './getters'  // 将getters导入
    Vue.use(Vuex)
    // 变量初始化
    const state = {
        count: 10
    }
    // 定义 mutations(即对变量state进行的操作)
    const mutations = {
        INCREMENT(state, canshu) {
            state.count++
        },
        DECREMENT(state) {
            state.count--
        }
    }
    // 创建 store 实例(先不着急看该部分代码,该部分就是将全局变量,mutations,actions,getters整体变成一体化的实例)
    export default new Vuex.Store({
        actions,
        getters,
        state,
        mutations
    })
actions.js中的代码
之所以用actions去提交mutations,应该是为了是的mutations中的方法可以异步操作(mutations中方法为同步执行,该处可能会迷惑,但是其实就是用actions中的方法去调用mutations中的方法而已)。
// 用于提交mutations中的INCREMENT方法(可根据自己的需要进行传参,对应的mutaitons中要接收参数)
export const increment = ({commit}) => {
    commit('INCREMENT', canshu)
}
// 用于提交mutations中的DECREMENT方法
export const decrement = ({commit}) => {
    commit('DECREMENT')
}

getters.js中的代码

一般getters中的代码比较简单,主要就将全局变量简单封装并导出,方便其他组件的调用。

// 该处将全局变量state下的count导出,是的其他vue组件都可以获取,进行修改
export const getCount = state => {
    return state.count
}

上面对vuex的几个组成部分进行了基本的了解,要使得整个项目使用vuex进行全局变量管理,要在main.js中引入vuex,并使用

在main.js中引入vuex(该部分引入在store.js添加也可)

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

至此,项目已经引用了vuex,接下来告诉大家如何在组件中引入

假如我们要在一个名为test.vue的组件中,对全局变量state.count进行修改

<script>
    import { mapGetters } from 'vuex'
    import { mapActions } from 'vuex'
    export default {
        computed: {
            // 使用对象展开运算符将 getters 混入 computed 对象中
            ...mapGetters(['getCount'])
        },
        methods: {
            ...mapActions([
                'increment', // 映射 this.increment() 为 this.$store.dispatch('increment')
                'decrement'
            ]),
            test: function() {
              this.increment(1)  // 该处即可向调用当前页面的其他方法一样进行调用actions中的方法
              console.log(this.getCount)  // 同理,也可以像调用本地data值的方式调用全局变量
            }
        }
    }
</script>



相关文章
|
6月前
|
JavaScript 开发者
Vue状态管理: 在Vuex中,什么是mutation?它们应该如何使用?
Vue状态管理: 在Vuex中,什么是mutation?它们应该如何使用?
175 4
|
存储 JavaScript
Vue2(状态管理Vuex)
Vue2(状态管理Vuex)
|
16天前
|
存储 JavaScript
Vue 状态管理工具vuex
Vue 状态管理工具vuex
|
6月前
|
存储 JavaScript
Vue的状态管理:Vuex的使用和最佳实践
【4月更文挑战第24天】Vue状态管理库Vuex用于集中管理组件状态,包括State(全局状态)、Getters(计算属性)、Mutations(同步状态变更)和Actions(异步操作)。Vuex还支持Modules,用于拆分大型状态树。使用Vuex时,需安装并创建Store,定义状态、getter、mutation和action,然后在Vue实例中注入Store。遵循最佳实践,如保持状态树简洁、使用常量定义Mutation类型、避免直接修改状态、在Actions中处理异步操作、合理划分Modules,以及利用Vuex提供的插件和工具,能提升Vue应用的稳定性和可维护性。
|
6月前
|
存储 JavaScript 前端开发
一起学习Vuex 4.0的状态管理(Vite)
一起学习Vuex 4.0的状态管理(Vite)
94 0
|
6月前
|
存储 JavaScript 前端开发
Vue状态管理:什么是Vuex?它的核心概念有哪些?
Vue状态管理:什么是Vuex?它的核心概念有哪些?
66 3
|
缓存 JavaScript
一文解析Pinia和Vuex,带你全面理解这两个Vue状态管理模式(下)
一文解析Pinia和Vuex,带你全面理解这两个Vue状态管理模式(下)
210 0
|
JavaScript
一文解析Pinia和Vuex,带你全面理解这两个Vue状态管理模式(上)
一文解析Pinia和Vuex,带你全面理解这两个Vue状态管理模式(上)
148 0
|
SQL 存储 缓存
Vue3中状态管理pinia学习(八)
Vue3中状态管理pinia学习(八)
265 2
Vue3中状态管理pinia学习(八)
|
存储 SQL 缓存
Vue3中状态管理pinia学习(六)
Vue3中状态管理pinia学习(六)
266 2
Vue3中状态管理pinia学习(六)