coderwhy vue3typescript版课堂day vuex状态管理在开发中我们会的应用程序需要处理各种各样数据这些_第1页
coderwhy vue3typescript版课堂day vuex状态管理在开发中我们会的应用程序需要处理各种各样数据这些_第2页
coderwhy vue3typescript版课堂day vuex状态管理在开发中我们会的应用程序需要处理各种各样数据这些_第3页
coderwhy vue3typescript版课堂day vuex状态管理在开发中我们会的应用程序需要处理各种各样数据这些_第4页
coderwhy vue3typescript版课堂day vuex状态管理在开发中我们会的应用程序需要处理各种各样数据这些_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

n在开发中,我们会的应用程序需要处理各种各样的数据,这些的管理我们就称之为是状态管理。np在Vuep而在组件中我们定义data或者在setup中返回使用的数据,p在模块tem p在模块中我们会产生一些行为

nJavaScriptpJavaScriptpp也包括一些UIn当我们的应用遇到多个组件共享状态ppnp对于一些简单的状态,确实可以通过props的传递或者Providep但是对于复杂的状态管理来说,显然单纯通过传递和共享的方式是不足以解决问题的,比如兄弟组件如何共享

n管理不断变化的state本身是非 的p状态之间相互会存在依赖,一个状态的变化会引起另一个状态的变化,Viewp当应用程序复杂时,state在什么时候,因为什么原因而发生了变化,发生了怎么样的变化,会变得非常难以控n因此,我们是否可以考虑将组件的内部状 出来,以一个全局单例的方式来管理呢p在这种模式下,我们的组件树构成了一个巨大的“试图p不管在树的哪个位置,任何组件都能获取状态或者 为p通过定义和 n这就是Vuex背后的基本思想,它借鉴了Flux、Redux、Elm(纯函数语言,redux有借鉴它的思想

n依然我们要使用vuex,首先第一步需要安装p我们这里使用的是vuex4.x,安装的时候需要添加next指定版本;npmnpminstall

创建n每一个Vuex应用 就是store(仓库pstore本质上是一个容器,它包含着你的应用中大部分的状态nVuexn第一:Vuex的状 是响应式p当Vue组件从store 状态的时候,若store中的状态发生变化,那么相应的组件也会被更新n第二:你不能直接改变storep改变store中的状态的唯一途径就显示提交(commit)p这样使得我们可以方便 每一个状态的变化,从而让我们能够通过一些工具帮助我们更好的管理应用的状态np创建Storep在app

n在组件中使用store,pp在optionsapi中使用,比如p在setup

Vuenvue其实提供了一个devtools,方便我们对组件或者vuexp我们需要 eta版本支持vue3,目前是6.0.0np方式一:通过chromep方式二:手 代码,编译、安装n方式一:通过Chromep由于某些原因我们可能不能正常登录Chrome

n方式二:手 代码,编译、安装/vuejs/devtools/tree/v6.0.0-beta.15 代码;p执行yarninstall安装相关的依赖;p执行yarnrunbuild打包;

nVuex使用单一状态树pp采用的是SSOT,SingleSourceofTruth,p这也意味着,每个应用将仅仅包含一个store实例;p单状态树和模块化并 ,后面我们会讲到module的概念np如果你的状态信息是保存到多个Store对象中的,那么之后的管理 等等都会变得特 p所以Vuexp单一状态树能够让我们最直接的方式找到某个状态的片段,而且在之后的

n当然,如果觉得那种方式有点繁琐(表达式过长),n但是,如果我们有很多个状态都需要获取话,可以使用mapStatepmapStatep也可以使用展开运算符和来原有的computed

n在setupp通过useStore拿到storep但是如果我们需要使用mapStaten默认情况下,Vuex并没有提供非常方便的使用mapState

n某些属性我们可能需要经过变化后来使用,这个时候可以使用

ngetters

ngetters

n这里我们也可以使用mapGettersn在setup

n更改Vuex的store中的状态的唯一方法是提交

n很多时候我们在提交mutationnpayloadn

n定义常量:mutation-n定义n提交

nn在setup

n一条重要的原则就是要记住mutationp这是因为devtool工具会记录mutation p每一条mutation被记录,devtoolsp但是在mutationp所以Vuex的重要原则中要求mutation

nAction类似于mutation,pAction提交的是mutation,pActionn这里有一个非常重要的参数pcontext是一个和store实例均有相同方法和属性的contextp所以我们可以从其中获取到commit方法来提交一个mutation,或者通过context.state和context.getters来获取state和getters;p但是为什么它不是store对象呢?这个等到我们讲Modules

n如何使用action呢?进行actionp分发使用的是store上的dispatchnn

nactionpp

nAction通常是异步的,那么如何知道actionp我们可以通过让action返回Promise,在Promise的then

n什么是p由于使用单一状态树,应用的所有状态会集中到一个比较大的对象,当应用变得非常复杂时,store对象就有可p为了解决以上问题,Vuex允 store分割成模块p每个模块拥有自己的state、mutation、action、getter

n对于模块内部的mutation和getter,接收的第一个参数是模块的局部状态对象

n默认情况下,模块内部的action和mutation仍然 在全 名空间中的p这样使得多个模块能够对同一个action或mutation作出响应;pGetter同样也默 在全局命名空间n如果我们希望模块具有更高的封装度和复用性,可以添加namespaced:truep当模

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论