vuex4快速入门

简介: vuex4快速入门

自从 vue2 升级到 vue3 之后,vue-router 从 3.x 升级到了 4.x,vuex 也从 3.x 升级到了 4.x。自从语法发生了较大的变化之后,其他的生态库也必须同步更新了。

现在的 vuex 版本是 4.0.0-rc.2,目前还是预览版本,可以通过下面的命令安装:

npm install vuex@next --save

每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (state)。

安装 Vuex 之后,让我们来创建一个 store。创建过程直截了当——仅需要提供一个初始 state 对象和一些 mutation:

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

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment (state) {
      state.count++
    }
  }
})

上面代码是 vuex3 版本的形式,而 vuex4 发生了变化:

import { createApp } from 'vue'
import { createStore } from 'vuex'

// 创建 store 容器实例.
const store = createStore({
  state () {
    return {
      count: 0
    }
  },
  mutations: {
    increment (state) {
      state.count++
    }
  }
})

const app = createApp({ /* your root component */ })

// 通过 use 注册插件
app.use(store)

通过对比我们发现,创建 store 之前是通过 new 实例来创建,现在是通过 createStore 这个工厂函数来创建实例,还有就是 use 在使用插件的时候,之前是直接传入 vuex 作为参数,而现在传入的参数是创建出来的实例。

现在,你可以通过 store.state 来获取状态对象,以及通过 store.commit 方法触发状态变更:

store.commit('increment')

console.log(store.state.count) // -> 1

为了在 Vue 组件中访问 this.$store 属性,你需要为 Vue 实例提供创建好的 store。Vuex 提供了一个从根组件向所有子组件,以 store 选项的方式“注入”该 store 的机制。这是 vuex 3.x 版本的使用方式了,但是升级 vuex 4.x 版本之后不再需要这样做了而是可以直接使用了。

new Vue({
  el: '#app',
  store: store,
}) 

现在我们可以从组件的方法提交一个变更:

methods: {
  increment() {
    this.$store.commit('increment')
    console.log(this.$store.state.count)
  }
}

在 setup() 内部,this 不会是该活跃实例的引用,所以如果是在 setup 函数中,需要使用 useStore 函数。这是一个新增的 API 。

import { useStore } from 'vuex'

export default {
  setup () {
    const store = useStore()
  }
}

State 和 Getters 的用法:

import { computed } from 'vue'
import { useStore } from 'vuex'

export default {
  setup () {
    const store = useStore()

    return {
      // 在 computed 函数中访问一个 state
      count: computed(() => store.state.count),

      // 在 computed 函数中访问一个 getter
      double: computed(() => store.getters.double)
    }
  }
}

Mutations 和 Actions 的用法:

import { useStore } from 'vuex'

export default {
  setup () {
    const store = useStore()

    return {
      // 访问一个 mutation
      increment: () => store.commit('increment'),

      // 访问一个 action
      asyncIncrement: () => store.dispatch('asyncIncrement')
    }
  }
}

组件中通过访问 this.$store 属性可以访问 store 容器,如果使用的是 composition API 使用 useStore 代替即可。

其他的用法和之前大同小异,主要注意上面提到的3个变化。

相关文章
|
JSON JavaScript 前端开发
快速入门Vue-2
快速入门Vue
55 0
|
Web App开发 JavaScript 前端开发
Vue快速入门
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
96 0
Vue快速入门
|
6月前
|
移动开发 JSON JavaScript
VUE2.0快速入门(二)
VUE2.0快速入门
50 2
|
6月前
|
缓存 JavaScript 前端开发
VUE2.0快速入门(一)
VUE2.0快速入门
79 0
|
11月前
|
存储 JavaScript 前端开发
vuex入门
vuex入门
59 0
|
缓存 JavaScript 前端开发
快速入门Vue-1
快速入门Vue
50 0
|
存储 JavaScript 前端开发
快速入门Vue-3
快速入门Vue
51 0
|
资源调度 JavaScript
vuex如何使用
Vuex是一个专为Vue.js设计的状态管理模式。它集中式管理了应用中所有组件的状态,使得状态管理更加简单和高效。下面是使用Vuex的基本步骤:
60 0
|
缓存 JavaScript 前端开发
快速入门Vue3(上)
快速入门Vue3(上)
109 0
|
缓存 JavaScript API
快速入门Vue3(下)
快速入门Vue3(下)
142 0