vue3.2中的vuex使用详解

下面是关于vue3.2中的vuex使用详解的完整攻略。

1. 什么是Vuex

Vuex是Vue.js应用程序的状态管理模式。它通过一个集中的存储管理所有组件的状态,并以相应的规则保证状态以可预测的方式发生变化。

2. 如何使用Vuex

2.1 安装Vuex

在vue项目中使用Vuex,需要先安装Vuex。使用npm安装:

npm install vuex --save

2.2 Vue中使用Vuex

在Vue项目中,需要先引入Vuex,并将其挂载到Vue中。

import {createStore} from 'vuex'
import Vue from 'vue'

Vue.use(Vuex)

const store = createStore({
  state: {...},
  mutations: {...},
  actions: {...},
  getters: {...}
})

export default store

其中,state表示存储的状态值,mutations表示提交对状态的更改,actions表示异步操作,getters表示从state中派生出一些状态。

2.3 在组件中使用Vuex

在组件中使用Vuex,需要使用Vue提供的mapStatemapMutationsmapActionsmapGetters四个辅助函数进行状态管理。

2.3.1 mapState使用示例

mapState函数可以直接将Vuex的state映射到组件的计算属性中。

import {mapState} from 'vuex'

export default {
  // ...
  computed: {
    ...mapState({
      count: state => state.count
    })
  }
}

2.3.2 mapMutations使用示例

mapMutations函数可以将Vuex的mutations映射到组件的methods中。

import {mapMutations} from 'vuex'

export default {
  // ...
  methods: {
    ...mapMutations([
      'increment', // 将 `this.increment()` 映射为 `this.$store.commit('increment')`
      'decrement' // 将 `this.decrement()` 映射为 `this.$store.commit('decrement')`
    ])
  }
}

2.3.3 mapActions使用示例

mapActions函数可以将Vuex的actions映射到组件的methods中。

import {mapActions} from 'vuex'

export default {
  // ...
  methods: {
    ...mapActions([
      'incrementAsync', // 将 `this.incrementAsync()` 映射为 `this.$store.dispatch('incrementAsync')`
      'decrementAsync' // 将 `this.decrementAsync()` 映射为 `this.$store.dispatch('decrementAsync')`
    ])
  }
}

2.3.4 mapGetters使用示例

mapGetters函数可以将Vuex的getters映射到组件的计算属性中。

import {mapGetters} from 'vuex'

export default {
  // ...
  computed: {
    ...mapGetters([
      'doneTodosCount'
    ])
  }
}

3. 示例说明

3.1 示例一

下面是一个简单的示例,说明如何在Vuex中管理计数器的状态。

安装Vuex

使用npm安装Vuex:

npm install vuex

在Vue项目中使用Vuex

在Vue项目中,需要先引入Vuex,并将其挂载到Vue中。

import {createStore} from 'vuex'
import Vue from 'vue'

Vue.use(Vuex)

const store = createStore({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    },
    decrement(state) {
      state.count--
    }
  },
  actions: {
    incrementAsync({commit}) {
      setTimeout(() => {
        commit('increment')
      }, 1000)
    },
    decrementAsync({commit}) {
      setTimeout(() => {
        commit('decrement')
      }, 1000)
    }
  },
  getters: {
    doneTodosCount: state => {
      return state.count
    }
  }
})

export default store

在组件中使用Vuex

在组件中使用Vuex,需要使用Vue提供的mapStatemapMutationsmapActionsmapGetters四个辅助函数进行状态管理。

<template>
  <div>
    <span>{{count}}</span>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
  </div>
</template>

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

export default {
  computed: {
    ...mapState({
      count: state => state.count
    }),
    ...mapGetters([
      'doneTodosCount'
    ])
  },
  methods: {
    ...mapMutations([
      'increment',
      'decrement'
    ]),
    ...mapActions([
      'incrementAsync',
      'decrementAsync'
    ])
  }
}
</script>

3.2 示例二

下面是另一个示例,说明如何在Vuex中管理购物车的状态。

安装Vuex

使用npm安装Vuex:

npm install vuex

在Vue项目中使用Vuex

在Vue项目中,需要先引入Vuex,并将其挂载到Vue中。

import {createStore} from 'vuex'
import Vue from 'vue'

Vue.use(Vuex)

const store = createStore({
  state: {
    cart: []
  },
  mutations: {
    addToCart(state, product) {
      const item = state.cart.find(i => i.id === product.id)
      if (item) {
        item.quantity++
      } else {
        state.cart.push({...product, quantity: 1})
      }
    }
  },
  actions: {},
  getters: {
    cartCount: state => {
      return state.cart.reduce((count, item) => count + item.quantity, 0)
    }
  }
})

export default store

在组件中使用Vuex

在组件中使用Vuex,需要使用Vue提供的mapStatemapMutationsmapActionsmapGetters四个辅助函数进行状态管理。

<template>
  <div>
    <h2>购物车</h2>
    <p>商品数量:{{cartCount}}</p>
    <ul>
      <li v-for="item in cart" :key="item.id">{{item.name}} * {{item.quantity}}</li>
    </ul>
    <button @click="addToCart({id: 1, name: '商品1', price: 100})">加入购物车</button>
  </div>
</template>

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

export default {
  computed: {
    ...mapState({
      cart: state => state.cart
    }),
    ...mapGetters([
      'cartCount'
    ])
  },
  methods: {
    ...mapMutations([
      'addToCart'
    ]),
    ...mapActions([
    ])
  }
}
</script>

以上就是关于vue3.2中的vuex使用详解的完整攻略以及两个示例的详细说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue3.2中的vuex使用详解 - Python技术站

(0)
上一篇 3天前
下一篇 3天前

相关文章

  • vue 数据遍历筛选 过滤 排序的应用操作

    关于Vue数据的遍历、筛选、过滤以及排序操作,我可以提供如下的完整攻略: 1. 使用v-for进行数据遍历 在Vue中,使用v-for指令可以方便地进行数据遍历,例如: <ul> <li v-for="item in items">{{item}}</li> </ul> 这个例子中,我们使用…

    Vue 1天前
    00
  • spring boot读取Excel操作示例

    Spring Boot读取Excel操作示例 对于Java开发人员来说,我们通常需要读取Excel文件中的数据来进行数据处理或导入到数据库中。在Spring Boot中,我们可以使用Apache POI库来实现读取Excel文件的操作。 步骤1:添加Apache POI依赖 在pom.xml文件中添加以下依赖: <dependency> <…

    Vue 2天前
    00
  • vue下载文件以及文件重命名方式

    下面是关于 Vue 下载文件以及文件重命名方式的完整攻略。 1. 下载文件 在 Vue 中下载文件,通常需要用到 AJAX 请求和 Blob 对象的相关 API。 首先,我们需要在 Vue 组件中定义下载方法: methods: { downloadFile() { axios.get(‘http://example.com/downloads/exampl…

    Vue 1天前
    00
  • Vue手写实现异步更新详解

    下面我将详细讲解“Vue手写实现异步更新详解”的完整攻略。 Vue手写实现异步更新详解 什么是异步更新? 在Vue中,当数据发生变化时,Vue会在下一个事件循环(microtask)中对DOM进行异步更新。这样做的好处是避免了过多、过于频繁的DOM操作,提高了性能和响应速度。 如何手写实现异步更新? Vue的异步更新是通过nextTick方法实现的。我们可以…

    Vue 2天前
    00
  • Vue实现输入框回车发送和粘贴文本与图片功能

    下面是Vue实现输入框回车发送和粘贴文本与图片功能的完整攻略。 步骤一:引入依赖 在Vue项目中引入vue-clipboard2和vue-filepond这两个库。 npm install vue-clipboard2 vue-filepond 步骤二:注册组件和事件 <template> <div> <input type=&…

    Vue 2天前
    00
  • Vue项目打包部署全过程(history模式)

    下面是Vue项目打包部署全过程(history模式)的完整攻略。 1. 打包项目 使用Vue CLI的build命令来打包项目,在项目根目录下的终端输入以下命令: npm run build 这将把项目打包到dist目录中。打包完后,dist目录下会生成一个index.html文件和一些资源文件。 2. 配置服务器 使用Express框架来搭建服务器,先安装…

    Vue 1天前
    00
  • Vue项目中实现带参跳转功能

    下面是Vue项目中实现带参跳转功能的完整攻略: 1. 传递参数 1.1 路由方式 我们可以利用 Vue Router 实现带参跳转,先看一下路由文件定义如下: import Vue from ‘vue’ import Router from ‘vue-router’ import Home from ‘@/views/home/Home’ import De…

    Vue 2天前
    00
  • vue文件树组件使用详解

    下面是关于如何使用Vue树形组件的详细攻略: 1. 安装和引入 首先,需要安装并引入Vue树形组件库。你可以通过命令行安装npm包: npm install treevue –save 也可以直接在HTML文件中引入CDN: <script src="https://unpkg.com/treevue/dist/treevue.min.js…

    Vue 1天前
    00
  • vue.js开发环境安装教程

    Vue.js开发环境安装教程 Vue.js是一个用于构建用户界面的渐进式的JavaScript框架。在开始开发Vue.js应用程序之前,必须安装Vue.js开发环境。本文将介绍如何安装Vue.js,以便能够使用该框架构建Web应用程序。 步骤1:安装Node.js Node.js是JavaScript运行时环境。Vue.js需要Node.js才能运行。因此,…

    Vue 1天前
    00
  • 基于vue开发微信小程序mpvue-docs跳转页面功能

    下面是基于Vue开发微信小程序MPVue-Docs跳转页面功能的完整攻略: 基本概念 在 MPVue-Docs 中,可以通过使用 vue-router 来实现页面的切换和跳转。vue-router 是 Vue.js 官方提供的路由管理器,可以在视图之间进行无缝的切换。 准备工作 在 mpvue 项目中安装 vue-router: npm install –…

    Vue 3天前
    00