详解如何在vue-cli中使用vuex

yizhihongxing

下面为您详细讲解如何在vue-cli中使用vuex。

什么是Vuex?

Vuex是一个专为Vue.js应用程序开发的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态,并以可预测的方式发起状态的改变。它的核心概念包括Store、State、Getter、Mutation、Action和Module。

如何在vue-cli中使用vuex?

以下是一些简单的步骤,以使用vuex管理vue-cli应用程序中的状态。

步骤一:安装vuex

在vue-cli项目中安装vuex:

npm install vuex --save

步骤二:创建一个Store

在项目src目录下新建一个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++
    }
  }
})

export default store

步骤三:将Store注入Vue实例

在src目录下新增一个main.js文件,并对main.js进行如下配置:

import Vue from 'vue'
import App from './App'
import store from './store'

new Vue({
  el: '#app',
  store,
  template: '<App/>',
  components: { App }
})

在这里,我们将store注入到Vue实例以使其在所有的组件中可用。

步骤四:在Vue组件中使用Store

在Vue组件中可以使用Vuex的两个钩子:mapStatestore.dispatch

  1. mapState

用于将Vuex的状态映射到组件的computed计算属性上,具体用法如下:

import { mapState } from 'vuex'

export default {
  computed: mapState({
    count: state => state.count
  })
}
  1. store.dispatch

用于分发一个带有类型的actions,具体用法如下:

import { mapActions } from 'vuex'

export default {
  methods: mapActions([
    'increment'
  ])
}

在上面的代码中,我们将increment动作分发到Store中,当在组件中访问这个动作时,调用函数store.dispatch('increment')进行提交。

示例说明

下面我们通过两个示例来说明在Vue-cli中如何使用Vuex。

示例一:计数器

首先,在src目录下的App.vue文件中,我们定义如下模板:

<template>
  <div id="app">
    Count: {{ count }}
    <button @click="increment">+</button>
  </div>
</template>

接下来,我们需要导入Vuex的mapStatemapActions方法。先在组件的scripts部分中,添加以下代码:

import { mapState, mapActions } from 'vuex';

接着,在计算属性computed的部分中,我们可以直接将Vuex的状态与组件的data属性进行绑定。具体来讲,我们可以用mapState方法做到这一点:

computed: mapState({
    // 把 state 上的 count 对应到组件的 count 上
    count: state => state.count
  })

最后,在methods中使用mapActions方法来分发increment的动作:

methods: mapActions([
    'increment'
  ])

完整代码范例:

<template>
  <div id="app">
    Count: {{ count }}
    <button @click="increment">+</button>
  </div>
</template>

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

export default {
  computed: mapState({
    // 把 state 上的 count 对应到组件的 count 上
    count: state => state.count
  }),
  methods: mapActions([
    'increment'
  ])
};
</script>

示例二:商品列表

在列表页中,我们可以通过Store的state属性来实现数据的动态渲染。在这里,我们可以分别在Store中写入两个模拟数据用于商品列表的展示。首先,先在store.js中添加以下代码:

state: {
      products: [
        { name: 'Product A', price: 100 },
        { name: 'Product B', price: 200 },
        { name: 'Product C', price: 300 },
        { name: 'Product D', price: 400 },
        { name: 'Product E', price: 500 },
        { name: 'Product F', price: 600 }
      ],
      cartItems: []
    },

在其中,products是存储商品信息的数据对象,cartItems是存储加入购物车的商品信息的数据对象。

接下来,在App.vue文件中,我们可以通过mapState方法将Store中的商品信息动态渲染在组件的标记上。具体实现方式如下:

<template>
  <div>
      <h3>商品列表:</h3>
      <ul>
        <li v-for="product in products" :key="product.name">
          {{ product.name }} - {{ product.price }}元
          <button @click="addToCart(product)">加入购物车</button>
        </li>
      </ul>

      <h3>购物车:</h3>
      <ul>
        <li v-for="(item, index) in cartItems" :key="index">
          {{ item.name }} - {{ item.price }}元
        </li>
      </ul>
  </div>
</template>

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

export default {
  computed: mapState({
    // 把 state 上的 count 对应到组件的 count 上
    products: state => state.products,
    cartItems: state => state.cartItems
  }),
  methods: {
    ...mapActions([
      'addToCart'
    ])
  }
}
</script>

在上面的代码中,我们完成了商品列表的动态展示和购物车的加入操作。我们在组件上定义了一个按钮,实现添加购物车的功能。在点击按钮后,它会触发action中的方法,在在购物车中添加相应的商品信息。

完整的范例代码如下:

<template>
  <div>
      <h3>商品列表:</h3>
      <ul>
        <li v-for="product in products" :key="product.name">
          {{ product.name }} - {{ product.price }}元
          <button @click="addToCart(product)">加入购物车</button>
        </li>
      </ul>

      <h3>购物车:</h3>
      <ul>
        <li v-for="(item, index) in cartItems" :key="index">
          {{ item.name }} - {{ item.price }}元
        </li>
      </ul>
  </div>
</template>

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

export default {
  computed: mapState({
    // 把 state 上的 count 对应到组件的 count 上
    products: state => state.products,
    cartItems: state => state.cartItems
  }),
  methods: {
    ...mapActions([
      'addToCart'
    ])
  }
}
</script>

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

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

相关文章

  • 详解vue mixins和extends的巧妙用法

    当我们在开发Vue应用时,有时候会发现多个组件之间存在一些相同的逻辑和属性,此时我们可以使用mixins和extends两种方式来解决这类问题。 什么是mixins? mixins是一种组件复用的方式,可以将通用的逻辑和属性封装在一个mixin对象中,然后在需要使用这些逻辑和属性的组件中引入该mixin对象即可实现代码的复用。使用mixins可以大幅减少代码…

    Vue 2023年5月27日
    00
  • vue中如何下载excel流文件及设置下载文件名

    下面我将详细讲解一下“Vue中如何下载Excel流文件及设置下载文件名”的攻略。 方案1:使用FileSaver.js库 安装 我们需要先安装FileSaver.js库,可以使用npm安装: npm install file-saver –save 具体实现 在需要下载Excel文件的地方,我们可以创建一个Blob对象,用于存储Excel文件的二进制数据。…

    Vue 2023年5月28日
    00
  • vue.js watch经常失效的场景与解决方案

    Vue.js Watch经常失效的场景与解决方案 在使用Vue.js的过程中,watch是非常常用的一个功能,它可以监听数据的变化并实现相应的操作,但是在实际开发中使用watch时可能会出现失效的情况,本文将讲解Watch失效的场景及解决方案。 Watch 失效的场景 深度监听 在Vue.js中,许多组件和工具可以帮助我们在数据更改时实时更新视图。这是通过“…

    Vue 2023年5月29日
    00
  • Vue组件和Route的生命周期实例详解

    Vue组件和Route的生命周期是Vue.js框架中非常重要的概念。在Vue.js开发中,生命周期指 Vue实例从创建到销毁的整个过程, Vue实例在这个过程中会自动执行一些方法,这些方法被称为生命周期钩子函数,这些函数可以帮助我们在不同的阶段进行操作。 在Vue Router中,我们经常需要用到Route的生命周期。Route的生命周期指的是当一个路由被匹…

    Vue 2023年5月27日
    00
  • vue项目环境搭建 启动 移植操作示例及目录结构分析

    下面就来详细讲解一下“vue项目环境搭建 启动 移植操作示例及目录结构分析”的攻略。 1. 环境搭建 在开始开发 Vue 项目之前,需要先搭建好相应的环境,具体步骤如下: 1.1 安装 Node.js 在 Node.js 官网下载最新版的 Node.js 后进行安装,这里不做过多介绍。 1.2 安装 Vue CLI Vue CLI 是 Vue 的脚手架工具,…

    Vue 2023年5月28日
    00
  • vue 如何将二维数组转化为一维数组

    将二维数组转化为一维数组可以使用 Javascript 的数组方法 flat()。而在 Vue 中,可以使用计算属性来获取转换后的一维数组。 计算属性是一个用来计算 Vue 实例数据的属性,可以基于其它数据进行计算得出。在 Vue 实例中使用计算属性时,只要该计算属性所依赖的数据发生了变化,该计算属性就会重新计算。因此,我们可以使用计算属性来获取每次更新数组…

    Vue 2023年5月28日
    00
  • vue中对象数组去重的实现

    下面是针对“Vue中对象数组去重的实现”的完整攻略。 1. 问题背景 在Vue开发中,我们经常需要对一个对象数组进行去重操作。如果数组中的对象没有特定的属性值用于唯一性的判断,这个问题就会变得更加困难。在这种情况下,我们通常需要使用一些技巧和方法来精确地进行去重操作。 2. 实现方式 2.1 使用Set 在ECMAScript 2015(ES6)中,新增了一…

    Vue 2023年5月28日
    00
  • 单页面vue引入百度统计的使用方法示例详解

    下面我将为你详细讲解使用Vue单页面应用集成百度统计的完整攻略。 步骤一:创建百度统计账号 首先,你需要到百度统计官网 https://tongji.baidu.com/ 注册并创建自己的统计账号。 在注册后,你需要添加一个网站并获取统计代码。在“网站管理” 页面,点击“添加网站”,根据指导填写网站信息。在添加成功后,会自动跳转到统计代码页面。在这里,你会看…

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