vue2.0中vuex到底是干什么的?怎么使用?

Vue2.0用TypeScript+vuex重构项目 Vue2.0用TypeScript+vuex重构项目 不得不说现在前端的技术更新越来越快了,一不学习就要给这个大环境淘汰了。 Typescript是javascript的超集。本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。其中我认为最重要的就是静态类型检查了。 写程序时项目若没有良好的设计思想,用js写的话就会“重构火葬场”。 话不多说,直接干货: 写在前面 Vue我已经学习了一个学... 阅读详情

关于vuex类的新闻最近很多,看到眼热就去查了下资料,然后扯出来一堆flux、redux、state、state之类的概念,以及大型工程必要性之类的。看官方手册也是昏昏然。

然而,我还是弄懂了!我准备从demo出发,以同样的一个最简单的demo,演示两种情况下的代码编写情况:

假设一个微小的应用,有一个标签显示数字,两个按钮分别做数字的加一和减一的操作。用户界面看起来是这样的:看以下代码:


<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
  <p>{{count}}
    <button @click="inc">+</button>
    <button @click="dec">-</button>
  </p>
</div>
<script>
new Vue({
  el:'#app',
  data () {
    return {
      count: 0
    }
  },
  methods: {
    inc () {
      this.count++
    },
    dec () {
      this.count--
    }
  }
})
</script>

很简单,页面就是一个数字,俩个按钮,一个+,一个-;整个代码结构非常清晰,代码是代码,数据是数据,这也是我一直以来非常喜欢vue.js的重要原因。代码就是放在methods数组内的两个函数inc、dec,被指令@click关联到button上。而data内返回一个属性count,此属性通过{{count}}绑定到标签p内。点击+按钮显示的数字就会加一下,点击-号,就相反。

现在来看看,同样的demo app,使用vuex完成的代码的样子,再一次,如下代码不是代码片段,是可以贴入到你的html文件内,并且直接使用浏览器打开运行的。

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuex@next"></script>
<div id="app">
  <p>{{count}}
    <button @click="inc">+</button>
    <button @click="dec">-</button>
  </p>
</div>
<script>

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
      inc: state => state.count++,
    dec: state => state.count--
  }
})

const app = new Vue({
  el: '#app',
  computed: {
    count () {
        return store.state.count
    }
  },
  methods: {
    inc () {
      store.commit('inc')
    },
    dec () {
        store.commit('dec')
    }
  }
})
</script>

我们先看到有哪些重要的变化:

  1. 新的代码添加了对vuex@next脚本的依赖。这是当然的,因为你需要使用vuex的技术,当然需要引用它

  2. methods数组还是这两个方法,这和demo1是一样的;但是方法内的计算逻辑,不再是在函数内进行,而是提交给store对象!这是一个新的对象!

  3. count数据也不再是一个data函数返回的对象的属性;而是通过计算字段来返回,并且在计算字段内的代码也不是自己算的,而是转发给store对象。再一次store对象!

就是说,之前在vue实例内做的操作和数据的计算现在都不再自己做了,而是交由对象store来做了。这突然让我想到就先餐厅现在都不在洗碗了,都交给政府认证的机构来洗了。

说回正题。store对象是Vuex.Store的实例。在store内有分为state对象和mutations对象,其中的state放置状态,mutations则是一个会引发状态改变的所有方法。正如我们看到的,目前的state对象,其中的状态就只有一个count。而mutations有两个成员,它们参数为state,在函数体内对state内的count成员做加1和减1的操作。

活还是那些活,现在引入了一个store对象,把数据更新的活给揽过去,不再需要vue实例自己计算了,代价是引入了新的概念和层次。那么好处是什么(一个土耳其古老的发问)?

vuex解决了组件之间共享同一状态的麻烦问题。当我们的应用遇到多个组件共享状态时,会需要:

  1. 多个组件依赖于同一状态。传参的方法对于多层嵌套的组件将会非常繁琐,并且对于兄弟组件间的状态传递无能为力。这需要你去学习下,vue编码中多个组件之间的通讯的做法。

  2. 来自不同组件的行为需要变更同一状态。我们经常会采用父子组件直接引用或者通过事件来变更和同步状态的多份拷贝。

以上的这些模式非常脆弱,通常会导致无法维护的代码。来自官网的一句话:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态。这里的关键在于集中式存储管理。这意味着本来需要共享状态的更新是需要组件之间通讯的,而现在有了vuex,就组件就都和store通讯了。问题就自然解决了。

这就是为什么官网再次会提到Vuex构建大型应用的价值。如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。



Vue3.0+vuex4.0尝鲜 前言 做题3.0出了beta版,这一段时间使用VCA的过程中,也接触了不少3.0的特性,除了些生态相关的东西,别的体验已经很好了,今天就基于vue-cli-plugin-vue-next搭建一个工程化的Vue3.0样例。 安装 注意,这个插件的TS的支持还没有做好,这里我们基于JS做。 yarn global add @vue/cli vue create vue3-beta-js-all 同... 阅读详情

相关推荐

VueJs2.0建议学习路线

最近VueJs确实火了一把,自从Vue2.0发布后,Vue就成了前端领域的热门话题,github也突破了三万的star,那么对于新手来说,如何高效快速的学习Vue2.0呢。 既然大家会看这篇文章,那么肯定是vue的学习者了,或是遇到的瓶颈,或者刚刚开始学,不知道如何快速起步,本篇文章将带领大家在最短的时间内构件一个学习Vue的学习路线。 Vuejs的作者尤雨溪尤大也写过一篇关于新手学习

qq_25156145的博客 3299

Vuex解决了什么问题?

Vuex解决了什么问题

m0_62226095的博客 1220

Vue3.0+vuex4.0和Vue2.0+vuex的对比

3.0vuex4.0.0-alpha.1 2.0 vuex4.x为了保持和vue3创建方式一致,所以建议使用createStore创建,而且不需要单独再引入vue 更详细的分析打开下面的链接 参考链接:https://blog.csdn.net/weixin_45517927/article/details/115490784 ...

weixin_43267086的博客 2510

Vuex 的出现解决了哪些问题?

常见的有以下几个 : 1.我们在使用Vue开发项目中,经常会有通过路由传递参数时,由于参数过多会出现会导致400 Bad Request,vuex可以解决这个问题, 2.解决多个组件共享状态时,单向数据流的简洁性很容易被破坏的问题 3.解决多个视图依赖同一状态的问题 4.解决了在中大型项目中,数据太多时,只需要在vuex更改处理数据,不用去每个页面更改 ...

weixin_58089129的博客 2170

uniapp vuex(vue2/vue3)应用

本文介绍了在uni-app中使用Vuex进行状态管理的方法,涵盖Vue2和Vue3两种实现方式。Vuex作为Vue.js的状态管理模式,通过集中式存储管理应用状态,解决了组件间共享数据和通信问题。文章对比了Vuex与全局变量的区别,阐述了Vuex的使用场景和优势,如响应式状态、跨组件数据共享等。详细说明了Vue2和Vue3环境下的配置步骤:包括创建store、挂载到Vue实例、以及如何在页面中访问和修改状态。最后提供了完整的代码示例,帮助开发者快速掌握在uni-app中集成Vuex的方法。

qq_36158551的博客 1245

自动驾驶仿真(五)—— 基于Carsim、Prescan、Simulink的联合仿真

自动驾驶仿真五——基于Carsim、Prescan、Simulink的联合仿真1. 联合仿真流程2. CarSim联合仿真配置要点3. Prescan联合仿真配置要点4. Carsim、Prescan、Simulink联合仿真结果5. 参考学习的书目教材 博主前面的博文已经介绍了Carsim和Prescan各自与Matlab/Simulink的相关联合仿真应用实例,并且论述过几款软件各自的优势及用法,CarSim适合动力学模型的建立,PreScan适合行车场景的搭建,Simulink适合控制算法的设计及信号

zhudj08的博客 1万+

Vue系列之—Vuex详解

Vue系列之—Vuex详解

zhou139856的博客 4173

闲鱼客户端三重动态签名机制解析:x-sign、x-mini-wua与x-umt

在移动客户端安全通信中,设备级动态签名已成为主流App防范自动化攻击的核心手段。其原理是将设备指纹、运行时行为与可信硬件标识深度融合,生成不可复用、不可跨端、不可静态伪造的请求凭证。这类机制超越传统Token或Session鉴权,具备强上下文绑定性与实时熵值校验能力,广泛应用于电商、社交及开放平台等高风险接口场景。技术价值体现在有效识别模拟器、无头浏览器与集群化爬虫,同时保障多端一致性与合规数据对接。本文聚焦闲鱼客户端实际落地的x-sign(带设备上下文的混合签名)、x-mini-wua(小程序行为水印)与

weixin_35732273的博客 494

到底vuex是什么?

广告 Vue.js小书已经出版,尤小右作序推荐:http://www.ituring.com.cn/boo...欢迎购买。Swift iOS 小书 http://www.ituring.com.cn/boo... 正文 关于vuex类的新闻最近很多,看到眼热就去查了下资料,然后扯出来一堆flux、redux、state、state之类的概...

weixin_34413802的博客 350

《软件工程——实践者的研究方法》重难点复习笔记(第八章——理解需求)

8项需求工程任务 inception 开始 8.1.1 identify stakeholders 定义:从软件开发中收益 例如:市场人员、销售经理、顾客、顾问、维护团队等(P139) 8.1.2 这个阶段的问题是context-free的。有三套(P140) 8.1.3 提到NFR(nonfunctional requirement)和QFD(quality

whooiif的博客 1814

STM32 SAI接口实战:用CubeMX快速配置多通道音频采集(附DMA优化技巧)

本文详细介绍了如何使用STM32的SAI接口通过CubeMX快速配置多通道音频采集系统,并提供了DMA双缓冲优化技巧。内容涵盖TDM模式配置、时钟同步、DMA优化及常见问题排查,帮助开发者高效实现高速数据采集应用。

weixin_42549037的博客 225

(三)Vue2.0之VUEX的基本使用(一)

一、Vuex的组成介绍: 1、State----数据仓库 2、getter----用来获取数据 3、Mutation -----用来修改数据 4、Action -------用来提交mutation,可以进行异步操作 二、安装vuex 步骤: *安装vuex包:npm install vuex *创建vuex实例:new Vuex.store() *main.js中将vuex实例挂载到vue对象上...

qq_39355295的博客 292

TCN+iTransformer时间序列预测实战:从风电功率预测到源码解析(附完整代码)

本文深入探讨了TCN与iTransformer融合模型在时间序列预测,特别是风电功率预测中的应用。通过解析iTransformer‘倒置’视角的创新架构与TCN强大的局部时序捕捉能力,文章提供了完整的融合方案设计、源码实现及实战调优经验,旨在构建更强大的下一代预测引擎。

weixin_29062671的博客 265

Vue2中Vuex的基本使用

本文主要介绍vue2中vuex的基本用法,以及如何实现模块化

xtcgjk的博客 3882

【工业相机】【深度4】线扫描相机 - 选型实践

前言: 在工业相机的深度应用的前三节里面,针对工业相机的选型、参数、应用计算等做了一些说明。期中,在深度3里面,在说明工业相机在速度场景下的应用的时候,专门开了一节介绍线扫描相机行频速度的计算公式和镜头的选型的大致说明,感觉说的还是不够透彻,切应用举例也不充分,这里特别开一个章节,基于线扫描相机的特点对比面阵相机的特点进行比较详细的说明,尤其对线扫描相机的选型实践,尤其是线扫描相机的分辨率选择计算、行频选择计算进行了充分的说明和计算说明,希望能够给用到线扫描工业相机的同学给予一定的参考: 阐述: 在编

山云的专栏 2万+

详解Pytorch求导

本文主要详解Pytorch求导,希望能对学习Pytorch的同学有所帮助。 文章目录 1. pytorch求导问题 2. pytorch三大类求导代码示例 2.1 标量求导 2.2 向量求导&矩阵求导

weixin_43178406的博客 3071

Vue2.0 Vuex的基本使用

Vuex可以更加方便的实现组件之间的数据共享,大家都把数据集中存储在一个地方(store),然后大家用数据的时候也都去那一个地方找.我觉得在数据交流需求比较大的情况下,这样会更有条理吧,不用在这里传一次再到另一个组件再接再传.刚看完教程,额,还是决定去看一下官方文档,虽然这必然意味着更多的时间投入.但是我也不想以后跟人家说"阿,我会vuex."然后就只是会用,别的一概不知..........

白瑕 的博客 5756

LSTM在DNA序列分析中的应用:生物信息学的探索

长短期记忆网络(LSTM)是循环神经网络(RNN)的一个变种,旨在解决RNN在长序列数据中出现的梯度消失和梯度爆炸问题。LSTM通过引入“记忆单元”和三个门(输入门、遗忘门和输出门)来有效捕捉长距离依赖关系。这使得LSTM在处理DNA序列等时间序列数据时具有优势。LSTM在DNA序列分析中展现了强大的能力,能够捕捉复杂的序列特征,并提供高效的解决方案。本文从LSTM的基本原理、DNA序列特性、模型构建、训练过程到实际应用进行了详细阐述。

斌擎科技 748

Vue2-vuex使用

vuex是一个vue中的一个插件,可以帮我们管理vue通用(多组件共享)的数据state: {count: 0,},// 1.定义mutationsstate.count++//增加数据},state.count--//减少数据})

R20232844的博客 3559

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Vue】Vue2中的Vuex

Vue2中使用Vuex

低调做人,低调编码,神码都是浮云 2264

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Vue 2 vs Vue 3 中 Vuex 使用方式的差异与演变

Vue 2 和 Vue 3 中的 Vuex 使用方法差异:Vue 3 引入了 Composition API,因此推荐使用useStore()钩子来访问 Vuex 状态,而不是像 Vue 2 中那样使用。Vue 3 中的 Vuex 使用方式更加简洁、灵活,并且与 TypeScript 的支持更加紧密。vue3同学使用pinia是更好的选择状态管理的变化:Vue 3 的 Vuex 使用方式更加符合现代前端开发的趋势,使得状态管理更加模块化、可组合,增强了代码的可维护性和可读性。

redrun博客 1571

在vue中如何使用vuex

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

weixin_46165123的博客 7926

在vue3中使用vuex

vuex在中大型项目中的应用十分广泛,通常会把全局都用到的数据放在vuex中,方便其他页面进行使用,在项目中,vuex中存放的数据大部分与user_id,权限等信息相关,那么在vue3中该怎么使用vuex呢?带着这个问题,在本篇文章中,咱们一起分析下 其实vue3中使用vuex和vue2使用vuex大体相同,都是通过state存放数据,通过mutations去改变vuex中的数据,对于异步的情况,通过actions提交mutations中的方法进而改变vuex中的数据,带着...

优快云_156的博客 1万+

Vue2-vuex

在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。//借助mapMutations生成对应的方法,方法中会调用commit去联系mutations(对象写法)//借助mapActions生成对应的方法,方法中会调用dispatch去联系actions(对象写法)//借助mapGetters生成计算属性,从getters中读取数据。//借助mapState生成计算属性,从state中读取数据。

马朋帅的博客 1267

Vue3.0中如何使用Vuex

首先呢,这个是vuex是如何定义的,在vue2.0中,我们是这样定义的 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ ......... }) 下面这段代码是vuex在vue3.0中是怎么定义的,来对比一下不同吧! import { createStore } from 'vuex' export default createStore({ state.

m0_59006402的博客 2171

Vue2.0之vuex的安装及使用

安装 npm install vuex --save 将store对象定义在main.js中 import Vuex from 'vuex' Vue.use(Vuex); var store = new Vuex.Store({ state:{ msg:'123' }, mutations:{ }, actions:{ } }) 在实例...

kksw1121 4102
上一篇: javascript中for循环里面套定时器,始终打印结束值原因?
下一篇: js仿照聊天记录的时间显示 今天 昨天
拼搏的小叔
博客等级 码龄10年 56粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值