专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

SpringBootVue(十三)VueX状态管理库

  对于组件化开发来说,大型应用的状态往往跨越多个组件。在多层嵌套的父子组件之间传递状态十分麻烦,而Vue更是没有为兄弟组件提供直接共享数据的方法。
  基于这个问题,许多框架提供了解决方案:使用全局的状态管理器,将所有分散的共享数据交由状态管理器保管,Vue也不例外。
  VueX是专为Vue。js应用程序开发的状态管理库,采用集中式存储来管理应用的所有组件状态。
  VueX用于管理分散在Vue各个组件中的数据。兄弟组件间的数据传递。
  vuex有两个版本,分别vuex3对应vue2;vuex4对应vue3
  两种版本安装方式:
  vuex3安装:npminstallvuex3
  vuex4安装:npminstallvuex
  官方网站:https:v3。vuex。vuejs。orgzh
  关于状态管理:
  一般在复杂应用中才会用到VueX,并非必须的。
  每一个VueX应用的核心都是一个store(仓库)全局对象,与普通的全局对象不同,基于Vue数据与视图绑定的特点,当store中的状态(数据)发生变化时,与之绑定的视图也会被重新渲染。
  store中的状态不允许被直接修改,改变store中的状态的唯一途径就是显式提交(commit)mutation,这可以方便地跟踪每一个状态的变化。
  在大型复杂应用中,如果无法有效跟踪到状态的变化,将会对理解和维护代码带来极大困扰
  VueX中有5个重要概念:State、Getter、Mutation、Action、Module
  下面进行演示
  创建一个基于Vue2的新项目:具体创建方式详见笔记(九)
  vuecreatevuexdemo
  将刚刚创建的项目vuexdemo拖入VisualStudioCode中
  vuex3安装:npminstallvuex3
  在src目录下新建一个store文件夹,新建一个index。js文件,提供一个初始state对象和一些mutation,文件代码如下:importVuefromvueimportVuexfromvuexVue。use(Vuex)conststorenewVuex。Store({state:{count:0},mutations:{increment(state){state。count}}})
  说明:建立了一个store(仓库),默认count初始值为:0;以后state是状态就是给各个组件调用的。
  不能直接改state的状态,如需要修改要调用mutations方法(该方法是用于1操作)。
  然后将store导出,这样就可以在main。js中使用了exportdefaultstore
  现在希望在组件中调用count的值,具体操作如下:
  1。由于我们是在main。js创建Vue的,因此在main。js中就可以导入刚刚创建的index。jsimportstorefrom。storeindex。js
  由于是以index。js作为文件名,也可以简写省略importstorefrom。store
  然后用Vuex提供的一个从根组件向所有子组件,以store选项的方式注入该store的机制:newVue({render:hh(App),store:store})。mount(app)做完这些就可以在任意组件中利用store对象去取值。2。新建一个Test。vue组件,代码如下:templatetemplate
  在根组件App。vue中进行注册
  在这个Test。vue中将count的值取出来。{{this。store。state。count}}
  运行项目后,浏览器就可以显示出count的初始值:0。这个时候Test。vue组件就成功调用了全局状态值。
  如何修改状态码?增加一个按钮,进行加1操作。buttonclickadd1button
  定义add方法:methods:{add(){this。store。commit(increment)}}
  再次强调,我们通过提交mutation的方式,而非直接改变store。state。count,是因为我们想要更明确地追踪到状态的变化。
  这里调用的是index。js中store里面的increment方法来进行修改操作,而不是用this。store。state。countthis。store。state。count1
  在浏览器中点击1按钮就可以改变状态了
  优化1:可以通过设置一个方法,然后就可以直接调用{{count}}computed:{count(){returnthis。store。state。count}},
  优化2:mapState辅助函数生成计算属性
  当一个组件需要获取多个状态的时候,将这些状态都声明为计算属性会有些重复和冗余。为了解决这个问题,我们可以使用mapState辅助函数帮助我们生成计算属性,让你少按几次键。
  当映射的计算属性的名称与state的子节点名称相同时,我们也可以给mapState传一个字符串数组。在单独构建的版本中辅助函数为Vuex。mapStateimport{mapState}fromvuexcomputed:mapState(〔映射this。count为store。state。countcount〕)
  Getter
  有时候我们需要从store中的state中派生出一些状态,例如对state数据进行过滤并进行计数等处理。
  下面进行演示,在state中再增加一个todos待办事项列表。其中,吃饭已经完成;睡觉尚未完成。todos:〔{id:1,text:吃饭,done:true},{id:2,text:。睡觉,done:false}〕
  假设要显示到Test。vue组件上,现将todos映射过来,然后就可以使用。
  现在假设只是想显示已经完成的动作,该怎样操作?
  这就需要对todos进行过滤。在index。js中增加一个getters方法(注意:两个方法之间要加逗号,)getters:{doneTodos:state{returnstate。todos。filter(todotodo。done)}}
  然后就可以在Test。vue组件中使用mapGetters辅助函数来映射。
  由于我们原来已经使用了mapState,现在又要同时用另外一个方法mapGetters就需要对代码进行一些修改:computed:{。。。mapState(〔count,todos〕),。。。mapGetters(〔doneTodos〕)},
  这时浏览器就过滤出done状态为true的数据
  下面的Mutation、Action、Module后面的实例讲解中才能更好理解,在此仅作为了解。Mutation
  更改Vuex的store中的状态的唯一方法是提交mutation。
  组件中提交Mutation的方法,代码如下。不再此进行演示,有兴趣可以自己试一下。import{mapMutations}fromvuexexportdefault{。。。methods:{。。。mapMutations(〔increment,将this。increment()映射为this。store。commit(increment)mapMutations也支持载荷:incrementBy将this。incrementBy(amount)映射为this。store。commit(incrementBy,amount)〕),。。。mapMutations({add:increment将this。add()映射为this。store。commit(increment)})}}
  Action
  在mutation中处理混合异步调用时就要用到Action。(在Vuex中,mutation都是同步事务:)
  先注册一个简单的action:conststorenewVuex。Store({state:{count:0},mutations:{increment(state){state。count}},actions:{increment(context){context。commit(increment)}}})
  在组件中分发Action,与前面类似:methods中使用mapActionsimport{mapActions}fromvuexexportdefault{。。。methods:{。。。mapActions(〔increment,将this。increment()映射为this。store。dispatch(increment)mapActions也支持载荷:incrementBy将this。incrementBy(amount)映射为this。store。dispatch(incrementBy,amount)〕),。。。mapActions({add:increment将this。add()映射为this。store。dispatch(increment)})}}Modules
  由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store对象就有可能变得相当臃肿。
  为了解决以上问题,Vuex允许我们将store分割成模块(module)。每个模块拥有自己的state、mutation、action、getter、甚至是嵌套子模块从上至下进行同样方式的分割。constmoduleA{state:()({。。。}),mutations:{。。。},actions:{。。。},getters:{。。。}}constmoduleB{state:()({。。。}),mutations:{。。。},actions:{。。。}}conststorenewVuex。Store({modules:{a:moduleA,b:moduleB}})store。state。amoduleA的状态store。state。bmoduleB的状态
  最终所有模块都要和到一起。当我们创建Vuex。Store时,通过modules参数给模块起名字,比如:给moduleA取名为a。
  需要访问的模块的时候就加上a。store。state。amoduleA的状态。
  其实就是对模块进行分割管理,比如:用户模块的状态,订单模块的状态等分别设置。
  上述仅为Vuex的基本概念,具体使用到后面的综合案例再具体演示。

令狐冲真正爱的是小师妹还是任盈盈?笑傲江湖里的感情线当普通的言情小说看,你要理解令狐冲对岳灵珊的感情,不要仅仅只看主角的心理和言谈,还要去理解作者写这本书的重点,要充分理解令狐冲的人物性格。我能理解为什么很多人觉得晚上分房睡,一年一见面,这些明星夫妻相处方式,真让人大开眼界花好月圆人长久,每一对夫妻之间都希望恩恩爱爱,无论是做什么事,都希望另一半能够陪伴在自己的身边。如今社会形容夫妻二人甜蜜亲昵的,也出现了老公宝女,和老婆宝男,等称呼。然而,如今的娱41岁王凯自爆被查出重病,为保命减少拍戏,直言红不红已不重要红不红的不重要。2017年,凭借伪装者和琅琊榜的余热处在事业巅峰的王凯却有了这样的感悟。这一年年初,他因肺病卧床许久的父亲去世,没过多久他本人也被查出肺上有些问题,于是他放慢了事业观今鉴古,唐宋时期女性婚姻地位高于其他王朝,体现在哪些方面?在阅读此文前,诚邀您点击一下关注,既方便您进行讨论与分享,又给您带来不一样的参与感,感谢您的支持。引言唐诗宋词作为中国文学艺术的两座高峰一直被后世所称赞。许多文学爱好者恨不得穿越回赵丽颖前经纪人曝黑料她哭着保证不再干那事儿,我才捧她从农村女孩到金鹰女神,赵丽颖靠着拼命三娘的劲头,在娱乐圈混得风生水起。她的成功,让人们看到了努力的意义,也看到了人性最贪婪的一面。也许是赵丽颖出身太卑微,所以当她成为鸡窝里飞出的那微软Edge111浏览器稳定版发布引入增强型侧边栏IT之家3月14日消息,微软于今天发布了Edge111浏览器稳定版,最新版本号为111。0。1661。41。本次更新重要引入了集成AI工具EdgeCopilot的增强型侧边栏,优化夫差兴吴灭越,败齐亡国夫差春秋时期的吴国霸主夫差(?前473年),姬姓,吴氏,姑苏(今江苏省苏州市)人,春秋时期吴国君主(前495年前473年),吴王阖闾之子。他是春秋时期最著名的霸主之一,曾经在夫椒之动情的中国人在二十世纪的中国,启蒙与革命的呼声此起彼落,亟欲疗救中国社会的沉疴巨痛。事实上,经过几代人前赴后继的实践,启蒙与革命也确实带来了中国社会的巨变,一九四九年之后,几乎重造了中国社会结顾顺章叛变4年后被枪决,行刑前,军统为什么用铁丝穿透其肩胛骨顾顺章是中国近代史上备受争议的人物之一。他曾经是中国国民党军队中的一名高级将领,也是中国共产党的一名领导人。然而,他却在1949年叛变,投靠了国民党政府,并成为了中国共产党的敌人。冷战的顶峰揭秘古巴导弹危机的起因与经过在1962年,美国发现苏联在古巴部署了导弹发射基地,这引起了美国政府的重视。这些导弹能够覆盖美国大部分地区,这意味着苏联可以随时发动核攻击,对美国造成巨大的威胁。美国总统肯尼迪认为秦始皇为何自称朕?把朕字拆开来看看,原来大有内涵秦始皇,完成了一统天下的霸业,修筑万里长城,维护了边境的安宁,并且还统一了钱币和度量衡,大大促进了秦朝经济的发展,这些都是恩泽后世千年的举措,值得人们赞美歌颂。但与此同时,秦始皇暴
初三真的是一次很大很大的离别三年前谁都不认识谁。三年后谁都了解谁。三年从陌生到熟悉。三年每个人都在这成长了。三年每个人都在这蜕变了。三年把酸甜苦辣都尝遍了。三年把喜怒哀乐都经历了。三年一个看似很漫长的日子就这一个陌生女人的来信我爱你,与你无关一个陌生女人的来信我爱你,与你无关01心动是一个人的兵荒马乱,你一个人征战沙场无人知晓,战死沙场无人关心,从头到尾,只有你一人。我们之中很少有人能够不计成本地爱一个人了,除了年纪实对于人的生存来说,最好的技术是什么样的?少数人把世界塑造成一场游戏,他们在背后操纵游戏规则,确保能赢的人始终是他们。你想生存下去,且有机会赢,就得找到真实的事和人。人类从单细胞开始,想要活下去就要吞噬能量,获取生存空间,缘聚缘散聚散随缘天下没有不散的宴席人和人相处是有时间局限的至于相处时间的长短当由相互之间的吸引力决定缘聚缘散聚散随缘听天由命比如年轻时候的一对恩爱的夫妻到了中年之后两个人的感情发生了变化任何解释都大量肥美海肠涌上烟台海滩,被称作海中人参是天然的味精9月16日,在台风梅花过后,烟台有很多市民感受到了大自然的馈赠,大量肥美海肠涌上了海滩。有市民称,沙滩上水里到处都是海肠,密密麻麻,直接捞就行了。海肠平常生活在浅海沙里,非常不容易到苗寨旅游切记,如果苗族女孩送你一块布,虽然不要钱但别轻易接每个地方都有每个地方的风土民情,作为外来人的我们,要对当地予以充分的尊重,这样我们的社会才能和谐。(此处已添加小程序,请到今日头条客户端查看)比如说,现在的人们都愿意出去旅游,而那2连板南天信息收购军品业务公司目前正在办理登记过户相关流程2连板南天信息9月18日发布股票交易异常波动公告,公司股票于9月15日9月16日连续两个交易日收盘价格涨幅偏离值累计超过20。根据有关规定,公司股票交易属于异常波动的情况。经核查,发生事故,造成1人死亡!300亿A股控股子公司停产整顿中国基金报记者李智9月18日下午,晋控煤业公告称,控股子公司塔山矿于9月15日发生一起事故,造成1人死亡。塔山矿已于9月16日停产,待联合调查组事故认定后将按照要求落实整改措施,在如何轻松回奶母乳是宝宝最好的食物,当然也有一些特殊原因,让妈妈们不得不给宝宝断奶,下面我将向各位想断奶的妈妈们分享一些回奶的方法。断奶最好选择比较舒适的季节进行断奶,这样宝宝不会太难受,可以选想知道自己有没有怀孕,从内裤上就能发现,准确率非常高相信各位想要宝宝的姐妹,都想第一时间知道自己有没有怀孕,每次排卵同房后,都会拿着验孕棒在那儿玩尿,但一次次的失败,让她们都精疲力尽。其实除了用验孕棒测试是否怀孕之外,我们也可以通过芯片反腐再起波澜大基金又一高管被查,3家上市公司深夜回应9月16日,中央纪委国家监委网站发布消息,国家开发银行管理企业副总裁任凯,正接受审查调查。该事件波及3家上市公司。当日晚间,中芯国际(688981。SH)三安光电(600703。S
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网