vue全家桶-vuex深入讲解

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/React子组件实例暴露方法(TypeScript)

    接下来我将为你详细讲解“Vue/React子组件实例暴露方法(TypeScript)”的完整攻略。 1. 为什么要暴露子组件实例方法? 在Vue/React组件开发中,父子之间的组件通信是很常见的一种情况。而在某些情况下,我们需要获取子组件的实例,以便使父组件调用子组件的方法或属性。这个时候就需要用到子组件实例的暴露方法。 2. 如何在Vue子组件中暴露实例…

    Vue 2023年5月28日
    00
  • vue v-for 使用问题整理小结

    下面是关于 “Vue v-for 使用问题整理小结” 的详细攻略。 1. v-for的基本用法 v-for是Vue的核心指令之一,它可以将一个数组或对象的数据渲染成列表。下面是v-for的基本用法: <ul> <li v-for="(item, index) in list" :key="index"…

    Vue 2023年5月29日
    00
  • vue获取时间戳转换为日期格式代码实例

    本次我们将详细讲解一下“vue获取时间戳转换为日期格式代码实例”。 一、什么是时间戳 时间戳(Timestamp)是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。时间戳常用于计算时间间隔和标记时间等情况。 二、获取时间戳 在 Vue 中,可以使用 JavaScript 自带的 Date.now() 方法获取当前时间戳。代码如下: l…

    Vue 2023年5月27日
    00
  • Vue实现移动端日历的示例代码

    Vue 实现移动端日历的示例代码可以分为以下几步: 步骤一:项目初始化 首先,我们需要创建一个 Vue 项目,并安装相关依赖: # 创建 vue 项目 vue create my-app cd my-app # 安装依赖 npm install amfe-flexible vant -S 其中,amfe-flexible 是用于适配移动端屏幕大小,vant …

    Vue 2023年5月29日
    00
  • 使用vue-cli创建vue2项目的实战步骤详解

    下面就是使用vue-cli创建vue2项目的实战步骤详解: 步骤一:安装node.js和npm 在使用vue-cli创建vue2项目之前,需要先安装node.js和npm,这里就不再赘述了,如果还没安装的话可以到node.js官网下载安装包进行安装。 步骤二:安装vue-cli 使用npm全局安装vue-cli,执行如下命令: npm install -g …

    Vue 2023年5月27日
    00
  • vue项目每30秒刷新1次接口的实现方法

    实现Vue项目每30秒刷新1次接口可以通过以下步骤完成: 安装axios库 可以通过以下命令安装axios: npm install axios –save 在Vue项目中创建一个Data对象来保存需要更新的数据 data() { return { data: [] } } 在Vue的Mounted生命周期钩子函数中初始化请求数据 mounted() { …

    Vue 2023年5月29日
    00
  • vue中异步函数async和await的用法说明

    下面就给您详细讲解下“vue中异步函数async和await的用法说明”的完整攻略。 1.什么是异步函数 在Vue中,经常会使用异步函数来处理异步操作,比如通过Ajax获取远程的数据、读取本地数据库等等。异步函数是一种特殊的函数,可以使函数的执行不阻塞主线程,并且可以在异步操作完成后通过回调函数来处理结果。在Vue中,异步函数通常使用Promise或asyn…

    Vue 2023年5月28日
    00
  • Vue开发过程中遇到的疑惑知识点总结

    针对“Vue开发过程中遇到的疑惑知识点总结”,我可以提供以下攻略: 1. Vue开发中常见的疑惑点 1.1 Vue实例的生命周期 Vue实例作为Vue项目中的核心,其生命周期的理解对于开发者来说尤为重要。Vue实例的生命周期分为8个阶段:- beforeCreate:在实例初始化之后、数据观测之前被调用。- created:在实例创建完成后被立即调用。- b…

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