五分钟搞懂Vuex实用知识(小结)

yizhihongxing

五分钟搞懂Vuex实用知识(小结)攻略

1.简介

Vuex是Vue.js应用程序开发的首选架构,它是一个状态管理库,将状态集中管理。Vuex主要解决了Vue.js的组件通信和数据共享的问题。

2.核心概念

Vuex的核心概念包括:

  • State:状态,即应用程序中的数据。
  • Getters:获取状态,用于获取State中的值并进行处理后输出。
  • Mutations:更改状态,用于直接更改State的值。
  • Actions:业务逻辑的封装,用于触发Mutations更改State的值。
  • Modules:模块化,将State、Getters、Mutations、Actions按模块拆分。

3.示例说明

3.1 简单示例:计数器

// 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++
    },
    decrement(state) {
      state.count--
    }
  },
  actions: {
    incrementAsync({ commit }) {
      setTimeout(() => {
        commit('increment')
      }, 1000)
    }
  },
  getters: {
    getCount: state => state.count
  }
})

export default store

上述代码定义了一个简单的计数器,使用Vuex管理状态。State包含计数器的初始值0,Getters用于获取计数器的值,Mutations用于直接更改State的值,Actions用于异步触发Mutations的更新操作。

// Counter.vue
<template>
  <div>
    <div>count: {{ count }}</div>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
    <button @click="incrementAsync">+ Async</button>
  </div>
</template>

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

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

上述代码定义了一个计数器组件,使用Vuex管理状态。组件通过mapMutations、mapActions、mapGetters等辅助函数将Vuex的Getters、Mutations、Actions映射到组件的计算属性和方法中,从而实现了对Vuex的便捷使用。

3.2 示例:购物车

下面我们用购物车的例子来更深入的学习Vuex。

// store.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    cart: []
  },
  mutations: {
    addToCart(state, item) {
      const existItem = state.cart.find(cartItem => cartItem.id === item.id)
      if (existItem) {
        existItem.quantity++
      } else {
        state.cart.push({
          ...item,
          quantity: 1
        })
      }
    },
    removeFromCart(state, item) {
      const index = state.cart.indexOf(item)
      state.cart.splice(index, 1)
    }
  },
  getters: {
    getCart: state => state.cart,
    getTotalPrice: state => {
      let price = 0
      state.cart.forEach(item => {
        price += item.price * item.quantity
      })
      return price
    }
  }
})

export default store

上述代码定义了一个购物车的示例,使用Vuex管理状态。State包含了一个购物车数组,包含多个商品项(例子这里只定义了两个item),每个商品包括id,name,img,price和quantity(表示数量)等属性。Getters用于获取购物车信息和计算购物车总价,Mutations用于更改State的值。

// Cart.vue
<template>
  <div>
    <h2>Cart</h2>
    <div v-for="item in cart" :key="item.id">
      <img :src="item.img" width="100">
      <div>
        <p>{{ item.name }}</p>
        <p>{{ item.price }}</p>
        <p>Quantity: {{ item.quantity }}</p>
        <button @click="removeFromCart(item)">remove</button>
      </div>
    </div>
    <div>Total: {{ totalPrice }}</div>
  </div>
</template>

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

export default {
  computed: {
    ...mapGetters(['getCart', 'getTotalPrice']),
    cart() {
      return this.getCart
    },
    totalPrice() {
      return this.getTotalPrice
    }
  },
  methods: {
    ...mapActions(['addToCart', 'removeFromCart'])
  },
  created() {
    this.addToCart({
      id: 1,
      name: 'Macbook Pro',
      img: 'https://source.unsplash.com/Nl43QfASCZY/200x150',
      price: 10000
    })
    this.addToCart({
      id: 2,
      name: 'iPhone 12',
      img: 'https://source.unsplash.com/RJtyO__-t1I/200x150',
      price: 5999
    })
  }
}
</script>

上述代码定义了一个购物车组件,使用Vuex管理状态。组件通过mapGetters、mapActions等辅助函数将Vuex的Getters和Actions映射到组件的计算属性和方法中,从而实现了对Vuex的便捷使用。组件在created的钩子函数中使用两个Action将商品加入购物车。

以上两个示例展示了如何在Vue.js应用中使用Vuex,通过理解其中的核心概念,我们可以将Vuex运用到更加复杂的应用中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:五分钟搞懂Vuex实用知识(小结) - Python技术站

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

相关文章

  • vue中elementUI里面一些插件的使用

    下面我来详细讲解vue中elementUI里面一些插件的使用的攻略。 1. 环境配置 在进行elementUI插件的使用之前,需要先配置Vue项目的环境以便引入elementUI依赖。具体流程如下:1. 在命令行中进入Vue项目所在的根目录,输入npm i element-ui -S安装elementUI依赖包。2. 在项目的main.js中引入elemen…

    Vue 2023年5月28日
    00
  • TypeScript 引用资源文件后提示找不到的异常处理技巧

    TypeScript 是一种强类型的 JavaScript 超集语言。在使用 TypeSript 进行开发时,我们有时会遇到引用资源文件后提示找不到的异常,这通常是因为在 TypeScript 中默认只会编译 .ts 文件,并不会编译其他类型的资源文件(比如 .json 或者 .png 文件)导致的。针对这种问题,我们可以使用以下技巧进行处理。 技巧一:使用…

    Vue 2023年5月28日
    00
  • vue开发之moment的介绍与使用

    Vue开发之Moment的介绍与使用 Moment.js介绍 Moment.js是一个专门用来解析、显示和操作日期时间数据的JavaScript库,提供了各种格式化、时间计算、日期相差、本地化和持续时间等功能,非常实用。 Moment.js可以用在浏览器端和Node.js环境下,可以通过npm或直接引入CDN来使用。同时,Moment.js也支持在Vue和其…

    Vue 2023年5月29日
    00
  • 从0开始学Vue

    从0开始学Vue的完整攻略 Vue是一个流行的JavaScript框架,用于开发现代Web应用程序。如果你想完全掌握Vue,以下是从0开始学Vue的完整攻略。以下步骤将帮助您开始学习Vue并掌握Vue的基础知识。 步骤1: 学习前提 在学习Vue之前,您需要具备以下先验知识: 基本的HTML和CSS知识 基本的JavaScript语法 如果您还没有掌握这些知…

    Vue 2023年5月27日
    00
  • vue监听用户输入和点击功能

    下面我来分享一下Vue监听用户输入和点击功能的完整攻略。 监听用户输入 当我们需要获取用户在输入框中的输入时,我们可以使用v-model指令,在input或者textarea标签上绑定这个指令,然后就可以获取到用户输入的内容。下面是一个示例: <template> <div> <input v-model="messa…

    Vue 2023年5月29日
    00
  • Vue.js教程之计算属性

    让我来为你详细讲解一下“Vue.js教程之计算属性”的完整攻略。 什么是计算属性? 在 Vue.js 中,计算属性(Computed)是一种在模板中使用的属性,通过计算属性我们可以实现一些动态的内容展示或逻辑处理,并且相较于使用方法或侦听器等方式,计算属性的实现更为简便、高效。 我们可以在 Vue 实例中使用 computed 属性来定义计算属性,该属性是一…

    Vue 2023年5月27日
    00
  • Vue3从0搭建Vite打包组件库使用详解

    下面我将详细讲解“Vue3从0搭建Vite打包组件库使用详解”的完整攻略。 如何搭建 步骤一:安装Vue CLI 首先安装 Vue CLI。打开终端并运行以下命令: npm install -g @vue/cli 步骤二:创建Vue项目 生成一个新的Vue项目,安装 Vue Router 和 Vuex。进入项目路径,执行以下命令: vue create my…

    Vue 2023年5月29日
    00
  • Vue表单快速上手

    Vue 表单快速上手 Vue 是一个流行的前端框架,提供了许多组件和工具来简化表单的创建和管理。在这个教程中,我们将介绍如何使用 Vue 来快速创建表单,并管理用户输入。 什么是 Vue 表单? Vue 表单是一种用于收集用户输入数据的 Web 表单,通常与 Vue.js 和其它依赖关系管理器(例如 Vuex)一起使用。Vue 表单不仅提供了一个易于使用的用…

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