vue全家桶-vuex深入讲解

yizhihongxing

Vue全家桶-Vuex深入讲解

简介

在Vue项目中,我们经常用到状态管理库Vuex来管理应用状态。Vuex通过一个集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

安装

使用npm安装:

npm install vuex --save

基本概念

State

Vuex使用一个单一状态树,用一个对象包含了全部应用层级状态。

Getter

Getter可以看作是Store的计算属性。Getter接受state作为第一个参数。

Mutation

更改Vuex状态的唯一方法是提交mutation。Mutation必须是同步函数。

Action

Action和Mutation类似,不同的是它不能直接更改状态,而是通过提交Mutation来改变状态,一般用于异步逻辑或复杂逻辑处理。

Module

当页面越来越复杂时,可以将Vuex分割成多个模块,每个模块拥有自己的state、mutation、getter和actions。不同模块的状态在全局上的state中以模块名区分。

使用

// store.js
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: {
     getCount: state => state.count
  },
  modules: {
    moduleA: {
      state: {},
      mutations: {},
      actions: {},
      getters: {}
    }
  }
})

export default store

// 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

<template>
  <div>
    <p>{{ count }}</p>
    <button @click="increment">Add Count</button>
    <button @click="incrementAsync">Add Count Async</button>
  </div>
</template>

<script>
import { mapGetters, mapActions } from 'vuex'

export default {
  computed: {
    ...mapGetters([
      'getCount'
    ]),
    count () {
      return this.getCount
    }
  },
  methods: {
    ...mapActions([
      'incrementAsync',
      'increment'
    ])
  }
}
</script>

示例2

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

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    userName: ''
  },
  mutations: {
    setUserName (state, userName) {
      state.userName = userName
    }
  }
})

// 实例中使用:store.commit('setUserName', 'mark')

结语

在本篇文章中,我们深入学习了Vuex的基本概念,并通过代码示例演示了Vuex的使用。Vuex大大简化了应用的数据流管理,让我们开发更放心。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue全家桶-vuex深入讲解 - Python技术站

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

相关文章

  • Vue.js中轻松解决v-for执行出错的三个方案

    下面是对“Vue.js中轻松解决v-for执行出错的三个方案”的完整攻略。 问题背景 在使用 Vue.js 进行开发过程中,我们经常会使用 v-for 来遍历一个数据列表,并生成对应的视图。但是,在某些情况下,我们可能会遇到 v-for 执行出错的问题,这时我们需要使用一些方法来解决这个问题。 问题示例 以下是一个常见的使用 v-for 遍历数组的示例: &…

    Vue 2023年5月28日
    00
  • Vue.js展示AJAX数据简单示例讲解

    下面我将为你讲解如何在Vue.js中展示AJAX数据的完整攻略。 1. 起步 首先,我们需要安装npm包管理器,并使用它来安装Vue.js: npm install vue 安装完成后,在HTML文件中引入Vue.js: <script src="https://cdn.jsdelivr.net/npm/vue"></s…

    Vue 2023年5月28日
    00
  • 详解Vue新增内置组件的使用

    详解Vue新增内置组件的使用 作为一个流行的前端框架,Vue一直在不断地发展和更新。最近,Vue又新增了一些内置组件,这些组件可以方便地实现一些常见的功能,同时也可以提高开发效率。本文将详细介绍Vue新增的内置组件的使用方法,并提供两个实例说明。 Vue新增的内置组件 Vue新增的内置组件有以下几个: <transition>:用于在元素插入或删…

    Vue 2023年5月27日
    00
  • SpringBoot校园综合管理系统实现流程分步讲解

    下面我将详细讲解“SpringBoot校园综合管理系统实现流程分步讲解”的完整攻略。 一、项目介绍 在这个部分,我们可以简要介绍一下该项目的背景和目的,以及使用的开发工具和框架等相关内容。 二、项目环境搭建 在这个部分,我们需要介绍如何搭建项目所需的环境,以及如何准备开发所需要的依赖库及配置文件等。 三、项目结构说明 在这个部分,我们需要详细介绍整个项目的结…

    Vue 2023年5月28日
    00
  • Vue使用CDN引用项目组件,减少项目体积的步骤

    Vue使用CDN引用项目组件,可以减少项目体积,提高页面加载速度。下面是完整的攻略: 步骤一:引入Vue.js文件 首先,我们需要在HTML文件中引入Vue.js文件。可以从UNPKG或者cdnjs获取CDN链接。 下面是一个例子,使用了UNPKG的Vue.js文件链接: <!DOCTYPE html> <html lang="e…

    Vue 2023年5月28日
    00
  • VUE响应式原理的实现详解

    VUE响应式原理的实现详解 介绍 VUE是一个MVVM模式的渐进式框架,其中响应式是VUE的核心特性之一,使得数据与界面保持同步,大大提高了开发效率。本文将阐述VUE响应式原理的实现,帮助读者更加深入理解VUE框架。 数据劫持 VUE的响应式实现依赖于ES5的get和set方法。在一个对象被创建时,遍历对象上的所有属性,将其转化为getter/setter,…

    Vue 2023年5月27日
    00
  • 详解vue组件开发脚手架

    详解Vue组件开发脚手架 简介 Vue组件开发是Vue开发中的重要一环。随着Vue的不断发展,Vue组件开发也变得越来越重要。为了方便开发者们快速构建Vue组件,我们需要一个模板或者框架。本文将详细讲解如何搭建一个Vue组件开发脚手架。 目标 我们的目标是为Vue组件开发创建一个脚手架,并且可以实现快速开发、配置简单等特点。 步骤 步骤1:安装Vue CLI…

    Vue 2023年5月28日
    00
  • vue使用iframe嵌入网页的示例代码

    下面我会给出一个使用Vue实现在页面中嵌入iframe的完整攻略。具体步骤如下: 1.在 Vue 项目中安装 iframe-resizer 库。 npm install iframe-resizer –save 2.在需要嵌入 iframe 的组件中,引用 iframe-resizer 库。 import iframeResizer from ‘ifram…

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