Vuex的五个属性和使用方法

2022-12-22 0 1,132

Vuex 是甚么?

Vuex 是两个专为 Vue.js 应用领域软件开发的状况区域化 + 库。它选用封闭式repeats应用领域的大部份模块的状况,并以适当的准则确保状况以一类可预估的形式发生改变。

Vuex的五个属性和使用方法

两张图介绍Vuex

Vuex 的四个特性及选用形式

一、State

虽然 Vuex 的状况储存是积极响应式的,从 store 示例中加载状况最简单的形式是在排序特性中回到某一状况:

// 建立两个 Counter 模块 const Counter = { template: `<div>{{ count }}</div>`, computed: { count () { return this.$store.state.count } } }

每每 this.$store.state.count 变动的这时候, 单厢再次求得排序特性,因此促发预览密切相关的 DOM。

二、Getters

Vuex 容许他们在 store 中表述“getter”(能指出是 store 的排序特性)。

const store = createStore({ state: { todos: [ { id: 1, text: , done: true }, { id: 2, text: , done: false } ] }, getters: { doneTodos: (state) => { return state.todos.filter(todo => todo.done) } } })import { mapGetters } from vuex export default { // … computed: { // 选用对象展开运算符将 getter 混入 computed 对象中 …mapGetters([ doneTodos, // … ]) } }

三、Mutation

更改 Vuex 的 store 中的状况的唯一形式是提交 mutation。

const store = createStore({ state: { count: 1 }, mutations: { increment (state) { // 变更状况 state.count++ } } })

你不能直接调用两个 mutation 处理函数。这个选项更像是事件注册:“当促发两个类型为increment的 mutation 时,调用此函数。”要唤醒两个 mutation 处理函数,你需要以适当的 type 调用store.commit 形式:

store.commit(increment)

四、Action

Action 类似于 mutation,不同在于:

Action 提交的是 mutation,而不是直接变更状况。Action 能包含任意异步操作。

让他们来注册两个简单的 action:

const store = createStore({ state: { count: 0 }, mutations: { increment (state) { state.count++ } }, actions: { increment (context) { context.commit(increment) } } })

Action 通过 store.dispatch 形式促发:

store.dispatch(increment)

五、Module

虽然选用单一状况树,应用领域的大部份状况会集中到两个比较大的对象。当应用领域变得非常复杂时,store 对象就有可能变得相当臃肿。

const moduleA = { state: () => ({ … }), mutations: { … }, actions: { … }, getters: { … } } const moduleB = { state: () => ({ … }), mutations: { … }, actions: { … } } const store = createStore({ modules: { a: moduleA, b: moduleB } }) store.state.a // -> moduleA 的状况 store.state.b // -> moduleB 的状况

tips:

当刷新页面,项目再次加载,Vuex 会重置,大部份状况回到初始状况,选用 vuex-persistedstate 能避免这种情况发生。

1.安装

npm install –save vuex-persistedstate

2.配置

在Vuex初始化这时候,作为模块引入。

import persistedState from vuex-persistedstate export default new Vuex.Store({ // … plugins: [persistedState()] })

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务