当前位置:首页 > JavaScript

js实现vuex

2026-03-02 05:07:40JavaScript

Vuex 简介

Vuex 是 Vue.js 的官方状态管理库,用于集中管理应用的所有组件的状态。通过 Vuex,可以更高效地管理共享状态,并提供响应式的数据绑定。

安装 Vuex

在项目中安装 Vuex:

npm install vuex --save

创建 Vuex Store

在 JavaScript 中,可以通过以下方式创建一个 Vuex Store:

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

Vue.use(Vuex);

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  },
  actions: {
    incrementAsync({ commit }) {
      setTimeout(() => {
        commit('increment');
      }, 1000);
    }
  },
  getters: {
    doubleCount(state) {
      return state.count * 2;
    }
  }
});

export default store;

核心概念

State

State 是 Vuex 的单一状态树,存储应用的所有共享状态。

state: {
  count: 0
}

Mutations

Mutations 是唯一可以修改 State 的方法,必须是同步函数。

mutations: {
  increment(state) {
    state.count++;
  }
}

Actions

Actions 用于处理异步操作,通过提交 Mutations 来修改 State。

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

Getters

Getters 类似于计算属性,用于从 State 中派生出新的状态。

getters: {
  doubleCount(state) {
    return state.count * 2;
  }
}

在 Vue 组件中使用 Vuex

在 Vue 组件中,可以通过 this.$store 访问 Vuex Store:

// 访问 State
this.$store.state.count;

// 提交 Mutation
this.$store.commit('increment');

// 分发 Action
this.$store.dispatch('incrementAsync');

// 访问 Getter
this.$store.getters.doubleCount;

模块化 Vuex

对于大型应用,可以将 Vuex 拆分为多个模块:

const moduleA = {
  state: { ... },
  mutations: { ... },
  actions: { ... },
  getters: { ... }
};

const store = new Vuex.Store({
  modules: {
    a: moduleA
  }
});

严格模式

启用严格模式后,任何非 Mutation 修改 State 的行为都会抛出错误:

js实现vuex

const store = new Vuex.Store({
  strict: true,
  state: { ... }
});

总结

Vuex 提供了一种集中式状态管理机制,适用于中大型 Vue.js 应用。通过 State、Mutations、Actions 和 Getters,可以实现高效的状态管理和数据流控制。

标签: jsvuex
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js 多选 实现

js 多选 实现

实现多选的 JavaScript 方法 使用复选框(Checkbox)实现多选 通过 HTML 的 checkbox 元素配合 JavaScript 实现多选功能。用户可以选择多个选项,提交时获取所有…

js和jquery

js和jquery

JavaScript 与 jQuery 的关系与区别 JavaScript 是一种动态编程语言,主要用于网页开发,使网页具有交互性。它是浏览器的原生脚本语言,可以直接在浏览器中运行。 jQuery…