快速掌握Vue3.0中如何上手Vuex状态管理

快速掌握Vue3.0中如何上手Vuex状态管理

在Vue 3.0 中使用Vuex状态管理有以下步骤:

第一步:安装 Vuex

使用npm或yarn进行安装:

// npm
npm install vuex@next

// yarn
yarn add vuex@next

第二步:创建store

创建一个store.js文件来管理你的状态管理:

import { createStore } from 'vuex';

const store = createStore({
  state() {
    return {
      // example of a state property
      count: 0
    }
  }
});

export default store;

第三步:将store绑定至Vue根实例

导入store.js并绑定便可:

import { createApp } from 'vue';
import App from './App.vue';
import store from './store';

const app = createApp(App)
app.use(store)
app.mount('#app')

第四步:调用store中的数据

使用 computed 属性来访问我们的 state

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { computed } from 'vue';

export default {
  name: 'Counter',
  computed: {
    count() {
      return this.$store.state.count;
    }
  },
  methods: {
    increment() {
      this.$store.commit('increment');
    }
  },
};
</script>

我们使用 $store.state.count 来访问count的值,并使用 $store.commit来提交我们的更新。

第五步:修改store中的数据

我们通过 commit 方法可以修改store中的数据:

const store = createStore({
  state() {
    return {
      count: 0
    }
  },
  mutations: {
    increment(state) {
      state.count++
    }
  }
})

mutations中的函数接收的第一个参数即为我们的state对象,我们修改state的值即可。

示例演示

下面我们来演示一下在购物车应用中如何应用Vuex状态管理:

第一步:安装 Vuex

使用npm或yarn进行安装:

// npm
npm install vuex@next

// yarn
yarn add vuex@next

第二步:创建store

我们的store.json文件内容如下, 模拟一个简单的购物车:

import { createStore } from 'vuex';

const store = createStore({
  state() {
    return {
      cart: [],
    };
  },
  mutations: {
    addToCart(state, item) {
      state.cart.push(item);
    },
    removeFromCart(state, index) {
      state.cart.splice(index, 1);
    },
  },
});

export default store;

第三步:将store绑定至Vue根实例

导入store.js并绑定便可:

import { createApp } from 'vue';
import App from './App.vue';
import store from './store';

const app = createApp(App)
app.use(store)
app.mount('#app')

第四步:调用store中的数据

我们使用 $store.state.cart.length 来获取购物车中物品的数量,使用 v-for 渲染所有的购物车物品:

<template>
  <div>
    <h2>Cart ({{ $store.state.cart.length }} items)</h2>
    <ul>
      <li v-for="(item, index) in $store.state.cart" :key="index">
        {{ item.name }} - {{ item.price }}
        <button @click.prevent="removeFromCart(index)">Remove</button>
      </li>
    </ul>
  </div>
</template>

<script>
import { computed } from 'vue';

export default {
  name: 'Cart',
  methods: {
    removeFromCart(index) {
      this.$store.commit('removeFromCart', index);
    },
  },
};
</script>

通过 $store.state.cart 属性即可获取购物车中所有的物品,使用 v-for 渲染出来。

第五步:修改store中的数据

我们可以通过 commit 方法来添加/删除物品:

<template>
  <div>
    <h2>Products</h2>
    <ul>
      <li v-for="(item, index) in products" :key="index">
        {{ item.name }} - {{ item.price }}
        <button @click.prevent="addToCart(item)">Add to Cart</button>
      </li>
    </ul>
  </div>
</template>

<script>
import { computed } from 'vue';

export default {
  name: 'Products',
  data() {
    return {
      products: [
        {
          name: 'Product One',
          price: 12.99,
        },
        {
          name: 'Product Two',
          price: 6.99,
        },
        {
          name: 'Product Three',
          price: 24.99,
        },
      ],
    };
  },
  methods: {
    addToCart(item) {
      this.$store.commit('addToCart', item);
    },
  },
};
</script>

通过 $store.commit('addToCart', item) 方法即可将当前商品添加到购物车中,通过 $store.commit('removeFromCart', index) 删除指定的商品。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:快速掌握Vue3.0中如何上手Vuex状态管理 - Python技术站

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

相关文章

  • js简单获取表单中单选按钮值的方法

    下面我来详细讲解 “js简单获取表单中单选按钮值的方法”。 1. HTML部分 首先,我们需要在HTML代码中定义一个表单,并在表单内部添加一个单选框。例如,我们可以在表单中添加两个单选框,分别用于选择“男性”和“女性”,代码如下所示: <form> <label> <input type="radio" n…

    Vue 2023年5月28日
    00
  • Vue实现简单的跑马灯

    下面是使用Vue实现简单的跑马灯的完整攻略: 1. 准备工作 首先需要引入Vue库,以及一些基础的CSS样式(可根据需要自行添加): <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue跑马灯</ti…

    Vue 2023年5月27日
    00
  • 详解Vue.js在页面加载时执行某个方法

    想要在Vue.js页面加载的时候执行某个方法,可以利用Vue的生命周期函数,其中mounted()钩子函数会在该Vue实例被挂载到 DOM 后执行。下面详细介绍实现步骤: 第一步:定义一个 Vue 实例 首先需要定义一个 Vue 实例,这个 Vue 实例只需要有 el 属性和 data 属性,如下所示: Vue({ el: ‘#app’, data: { m…

    Vue 2023年5月28日
    00
  • Vue零基础入门之模板语法与数据绑定及Object.defineProperty方法详解

    下面是“Vue零基础入门之模板语法与数据绑定及Object.defineProperty方法详解”的完整攻略。 一、模板语法及数据绑定 1.1 插值 Vue框架可以在HTML标签中使用插值语法,通过{{expression}}在模板中绑定数据。Expression通常是JavaScript表达式或变量,可以计算出一个值,并在绑定时进行渲染。例如: <d…

    Vue 2023年5月27日
    00
  • 详解使用Vue Router导航钩子与Vuex来实现后退状态保存

    本文将详细讲解如何使用Vue Router导航钩子与Vuex来实现后退状态保存的解决方案。 什么是导航钩子? 导航钩子是Vue Router提供的一种功能,用于在路由导航过程中拦截操作,触发特定的函数。导航钩子包含全局导航钩子和路由级别导航钩子。 对于全局导航钩子,可以用于全局拦截路由导航,比如用户未登录时跳转到登录页面。而对于路由级别导航钩子,可以用于针对…

    Vue 2023年5月28日
    00
  • 详解Vue内部怎样处理props选项的多种写法

    Vue是一种极为流行的前端开发框架,props选项是Vue组件中常用的一个属性,用于在父组件中向子组件传递数据。props有多种常见的写法,如: 字符串数组 javascript props: [‘title’, ‘content’] 对象 javascript props: { title: String, content: { type: String,…

    Vue 2023年5月27日
    00
  • vue.js实现三级菜单效果

    当使用vue.js框架时,实现三级菜单效果需要多个步骤。以下是其中的几个关键步骤: 步骤一:定义Vue实例中的数据结构 定义一个vue实例,包含一个数组,数组每个元素表示一个菜单项,该数组每个元素还包含以下属性: id:唯一标识该菜单项,每个菜单项的id值必须唯一。 name:表示该菜单项的名称。 children:表示该菜单项包含的子菜单,该属性的值同样是…

    Vue 2023年5月28日
    00
  • Vue中的errorHandler异常捕获问题

    Vue中的errorHandler异常捕获问题 在Vue开发过程中,我们难免会遇到一些异常错误的情况,例如网络请求失败、参数错误等等。这时候,Vue提供了一个全局的异常处理函数errorHandler,可以方便地进行异常处理,防止程序因异常崩溃。 errorHandler函数介绍 Vue提供的errorHandler函数可以拦截应用程序中的未捕获异常错误,当…

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