vue 怎么清空store里的值_Vuex是什么?Vuex能做什么?Vuex怎么使用?

点击右上方红色按钮关注“web秀”,让你真正秀起来

前言

前段时间,有小伙伴问我,Vuex是怎么玩儿的?也是一直没有机会,趁着今天有空,一起来学习一波。

267a1898cf6e9ad1a2e3c756ff690cf9.png

本文章你能学到什么?

1、Vuex是什么?哪种功能场景使用它?

2、Vuex有哪几种属性?

3、使用Vuex的好处?

4、使用Vuex示例。

5、Vuex常见错误。

下面我们来详细讲讲!

Vuex是什么?哪种功能场景使用它?

dba8890f77361fadfb834c69943b6eb8.png

官方话:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。

简单的说:Vuex是vue框架中状态管理。

这里就又出现一个问题:那什么是“状态管理模式”?

什么是“状态管理模式”?

把组件的共享状态抽取出来,以一个全局单例模式管理。在这种模式下,我们的组件树构成了一个巨大的“视图”,不管在树的哪个位置,任何组件都能获取状态或者触发行为!这就是“状态管理模式”。

应用场景有:单页应用中,组件之间的数据状态。 应用实例: 1、购物车功能; 2、下单页面有选择优惠券按钮,点击进入优惠券页面,选择后返回到下单页,数据会绑定回来,显示已选择的优惠券; 3、登录状态等等

d68ab7c487c7052f1b704c9bd4970a7a.png

Vuex有哪几种属性?

有五种,分别是 State、 Getter、Mutation 、Action、 Module

Vuex的State特性

1、Vuex就是一个仓库,仓库里面放了很多对象。其中state就是数据源存放地,对应于一般Vue对象里面的data

2、state里面存放的数据是响应式的,Vue组件从store中读取数据,若是store中的数据发生改变,依赖这个数据的组件也会发生更新

3、它通过mapState把全局的 state 和 getters 映射到当前组件的 computed 计算属性中

Vuex的Getter特性

1、getters 可以对State进行计算操作,它就是Store的计算属性

2、虽然在组件内也可以做计算属性,但是getters 可以在多组件之间复用

3、如果一个状态只在一个组件内使用,是可以不用getters

Vuex的Mutation特性

Action 类似于 mutation,不同在于:Action 提交的是 mutation,而不是直接变更状态;Action 可以包含任意异步操作。

Vuex的Module特性

Module 可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理。

const moduleA = {  state: { ... },  mutations: { ... },  actions: { ... },  getters: { ... } } const moduleB = {  state: { ... },  mutations: { ... },  actions: { ... } }  const store = new Vuex.Store({  modules: {  a: moduleA,  b: moduleB })
8a82a79a71124da6af9a578cf2fe4adb.png

使用Vuex的好处?

1、多层嵌套的组件、兄弟组件间的状态会更好管理维护。

2、缓存一些当前要使用请求远程或本地的数据集(刷新后会自己销毁)。

3、有了第二条,就可以减少向服务器的请求,节省资源。如果你的用户足够多,那么每多出一个请求,对公司来说,都是一大笔钱。

4、对开发者来说,如果你的项目足够复杂,团队的规模也不仅是一个人,数据集中处理更利于程序的稳定和维护。

86b04a6b9a0c09be13942d425818d903.png

使用Vuex示例

npm install vuex --save
count = {{$store.state.count}} +5 -3

创建一个vuex文件夹,文件夹里面创建一个store.js文件

import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)// 首先声明一个状态 stateconst state = { count: 0}// 然后给 actions 注册事件处理函数,当这个函数被触发时,将状态提交到 mutaions中处理const actions = { increment: ({ commit }) => commit('increment'), // 提交到mutations中处理 decrement: ({ commit }) => commit('decrement')}// 更新状态const mutations = { increment (state) { state.count = state.count + 5 }, decrement (state) { state.count = state.count - 3 }}// 获取状态信息const getters = {}// 下面这个相当关键了,所有模块,注册才能使用export default new Vuex.Store({ state, mutations, actions, getters})

要在main.js声明全局

...import store from './vuex/store';...new Vue({ ... store ...})

Vuex常见错误

5795cceb12e8e9bc4998eeba1c224e2a.png

很多时候,总是不知不觉的直接改变 store 中的状态。这就导致了一个非常常见的错误:Do not mutate vuex store state outside mutation handlers.

2c53bdef862db159367df5352fab506a.png

改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation

...this.store.commit('increment', 10);

改变一下store.js文件

...const mutations = { increment (state, params) { // params=10 }}...

公告

喜欢小编的点击关注,了解更多知识!

源码地址,可以点击下方“了解更多”获取!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您提出了两个问题,我将分别回答: 1. 支付流程是什么? 支付流程通常包括以下步骤: 1)用户在网站或移动应用中选择商品或服务,并添加到购物车中。 2)用户进入结算页面,选择支付方式并填写相关信息。 3)用户提交订单后,系统生成订单号,并将订单信息传递给支付网关。 4)支付网关将订单信息发送给用户选择的支付机构。 5)用户在支付机构的支付页面上完成支付。 6)支付机构将支付结果通知支付网关。 7)支付网关将支付结果通知商户网站或移动应用。 8)商户网站或移动应用根据支付结果更新订单状态,完成交易。 2. Vuex的模块化是如何的? Vuex是一个专为Vue.js应用程序开发的状态管理模式。Vuex的模块化是通过将Vuex的state、mutations、actions和getters拆分成多个小模块来实现的。 具体来说,可以将Vuex的代码拆分成多个模块,每个模块可以有自己的state、mutations、actions和getters。这些模块可以通过Vuex的模块化注册方式注册到Vuexstore中。 例如,一个简单的Vuex应用程序可以拆分成两个模块:一个是用户模块,用于处理用户信息;另一个是商品模块,用于处理商品信息。每个模块都有自己的state、mutations、actions和getters,它们可以通过模块化注册的方式注册到Vuexstore中。这样,开发人员可以更好地组织和管理Vuex的代码,提高代码的可维护性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值