Vue的状态管理vuex使用方法详解

yizhihongxing

Vue的状态管理vuex使用方法详解

Vue.js 是一套前端实现 MVVM 模式的框架,而 Vuex 是基于 Vue 构建的专门为大型应用程序开发的状态管理模式和库。Vuex 状态管理的核心是使用一个全局 store 单位化管理所有的组件之间共享的状态。本篇文章将详细讲解 Vuex 的使用方法。

安装 Vuex

安装 Vuex 可以通过 npm 、yarn 、cdn 或直接在 js 文件中引入等方式。

通过 npm 安装:

npm install vuex --save

通过 yarn 安装:

yarn add vuex

通过 CDN 直接引入:

<script src="https://unpkg.com/vuex@x.x.x/dist/vuex.js"></script>

使用 Vuex

使用 Vuex 的第一步,是创建一个全局唯一的 Store 对象。Store 对象中包含了应用中所有的状态 state 、派发的 mutations 、行为的 action 、和获取状态的 getters 。其具体实现步骤如下:

  1. 创建一个全局唯一的 Store 对象
// store.js
import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  }
});
  1. 在创建 Vue 根实例时,将 Store 对象作为选项属性传递给 Vue 根实例。
// main.js
import Vue from "vue";
import App from "./App.vue";
import store from "./store";

new Vue({
  el: "#app",
  store,
  render: h => h(App)
});
  1. 访问状态 state 和操作状态 mutations
// App.vue
<script>
export default {
  computed: {
    count() {
      return this.$store.state.count;
    }
  },
  methods: {
    increment() {
      this.$store.commit("increment");
    }
  }
}
</script>

以上是简单的 Vuex 应用示例,下面将分别详细讲解状态、Mutation、Action、Getter。

状态 (State)

Vuex 中的状态存储仓库(store)和 Vue 实例有所不同。store就像一个存储库,它包含了整个应用的状态。这个状态是响应式的,即当其发生变化时,Vue.js 帮您更新视图。我们可以将状态想象成一个仓库,它包含了整个应用的数据。声明并且初始化状态如下:

const store = new Vuex.Store({
  state: {
    count: 0
  }
});

如上面代码所示,在 state 中定义了一个 count 状态。

Mutations

Mutation 是 Vuex 中的原子操作,其接收 state 作为第一个参数,并且可以接收额外的参数。其核心作用是用来更新 Vuex 中 store 的 state 当前状态。其主要步骤如下:

  1. Mutations 类型常量
export const ADD_TODO = "ADD_TODO";
  1. 定义 mutations 函数
mutations: {
    [ADD_TODO](state, { todo }) {
      state.todos.push(todo);
    }
}
  1. 提交 mutations 来更新状态
this.$store.commit(ADD_TODO, { todo: { text: "New Todo" } });

如此,状态已更新。

Action

Action 是 Vuex 中用于提交 mutation 的异步事件,其中可以包含任意异步操作。其核心作用是处理异步操作,并且通过提交 mutations 事件来更新状态。实现步骤如下:

  1. 异步事件
import axios from "axios";

export const FETCH_TODOS_BEGIN = "FETCH_TODOS_BEGIN";
export const FETCH_TODOS_SUCCESS = "FETCH_TODOS_SUCCESS";
export const FETCH_TODOS_FAILURE = "FETCH_TODOS_FAILURE";

export function fetchTodos() {
  return dispatch => {
    dispatch(fetchTodosBegin());
    return axios
      .get("https://jsonplaceholder.typicode.com/todos")
      .then(response => {
        dispatch(fetchTodosSuccess(response.data));
        return response.data;
      })
      .catch(error => dispatch(fetchTodosFailure(error)));
  };
}

export const fetchTodosBegin = () => ({
  type: FETCH_TODOS_BEGIN
});

export const fetchTodosSuccess = todos => ({
  type: FETCH_TODOS_SUCCESS,
  payload: { todos }
});

export const fetchTodosFailure = error => ({
  type: FETCH_TODOS_FAILURE,
  payload: { error }
});
  1. 提交 action 来调用异步事件
this.$store
  .dispatch(fetchTodos)
  .then(() => {
    console.log(this.$store.todos);
  })
  .catch(error => {
    console.error(error);
  });

如此,异步事件和状态已更新。

Getter

Getter 是 Vuex 中用于处理 state 的计算属性。Getter 将一个 state 对象作为第一参数,接收 Getter 方法作为第二个参数,并返回状态的计算结果。其主要步骤如下:

  1. Getter 计算函数
export const getVisibleTodos = (state, filter) => {
  const todos = state.todos.filter(todo => todo.completed !== filter);
  return todos;
};
  1. 使用 Getter 函数
computed: {
  visibleTodos() {
    return this.$store.getters.getVisibleTodos(this.filter);
  }
}

如此,state 对象的计算结果已获取到。

本篇文章主要介绍了 Vuex 的状态管理方法,包括如何定义状态(State)、原子操作(Mutation)、异步操作(Action)和计算属性(Getter),抛砖引玉,希望能为 Vue 使用者带来帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue的状态管理vuex使用方法详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 前端项目中的Vue、React错误监听

    前端项目中的Vue、React错误监听,是一项非常重要的工作。在开发过程中,难免会出现各种错误,有些错误不及时解决可能会导致应用程序崩溃或无法正常运行。因此,为了尽可能地避免这种情况的发生,在Vue和React项目中及时监听错误,并及时处理和提醒用户是非常必要的。 Vue错误监听的完整攻略: Vue提供了一个全局错误处理函数,可以用来处理项目中的错误,通过在…

    Vue 2023年5月28日
    00
  • vue之将echart封装为组件

    封装echarts为Vue组件并不难,只需要遵循以下步骤即可。 步骤1:安装echarts和vue-echarts 使用npm安装echarts和vue-echarts依赖: npm install echarts vue-echarts –save 步骤2:创建一个Echarts.vue组件 在src/components目录下创建一个Echarts.v…

    Vue 2023年5月28日
    00
  • Vue3中watch监听使用详解

    下面详细讲解Vue3中watch监听的使用方法。 什么是Vue3中的watch监听 watch监听是Vue3的一个新特性,它可以用于观察 Vue 实例数据的变化,执行一些副作用操作。Vue3中watch监听的基本语法如下: <template> <div> {{ message }} </div> </templat…

    Vue 2023年5月29日
    00
  • Vue2.0脚手架搭建

    Vue2.0脚手架搭建 什么是Vue脚手架 Vue脚手架通常是指在开始Vue项目开发时所使用的一个基础模板,它会为我们预先搭好项目的基础结构,例如自动引入Vue,预定义一些常用文件夹例如views、utils等,还会自动配置webpack等工具,从而可以省去我们手动搭建项目基础结构的时间和精力。当前比较常用的Vue脚手架工具有Vue-cli 2.x和Vue-…

    Vue 2023年5月28日
    00
  • Vuex模块化与持久化深入讲解

    Vuex模块化与持久化深入讲解 1. 什么是Vuex模块化和持久化? Vuex是一个专为Vue.js设计的状态管理库,它通过集中式存储管理应用的所有组件的状态,方便实现复杂组件间的数据共享。其中,Vuex模块化指的是将一些具有复杂业务逻辑或多个子模块组成的Vuex store分成多个小模块,以增加代码可维护性和复用性。Vuex持久化指的是通过存储到local…

    Vue 2023年5月28日
    00
  • 详解10分钟学会vue滚动行为

    详解10分钟学会vue滚动行为 本文将详细讲解如何在Vue中实现滚动行为,以满足用户在页面中的滚动需求。通过本文,你可以快速了解Vue的相关特性和API,快速上手Vue的开发。 Vue中的滚动行为实现 在Vue中,通过<router-link>组件的scroll-behavior属性,我们可以快速实现滚动行为。 首先,我们需要在router/in…

    Vue 2023年5月29日
    00
  • vue filter的四种用法小结

    下面是“Vue Filter的四种用法小结”的详细讲解。 什么是Vue Filter? Vue Filter是Vue.js中提供的一种数据过滤器(Data Filter)。它可以通过对数据进行转换和过滤来得到符合需求的数据。Filter可以在模板中使用,也可以在JavaScript代码中使用。 Vue Filter的四种用法 全局Filter 全局Filte…

    Vue 2023年5月28日
    00
  • Vue自定义组件使用事件修饰符的踩坑记录

    下面就是“Vue自定义组件使用事件修饰符的踩坑记录”的详细攻略: 问题 在Vue自定义组件中,如果要使用事件修饰符,在事件名称后面添加修饰符,比如@click.capture、@keydown.enter等。但是一个常见的问题是,如果我们给自定义组件添加了v-model,那么在使用v-model双向绑定数据的时候,事件修饰符就会失效。具体表现为,即使添加@b…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部