小编给大家分享一下Vuex中映射的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
Vuex是一把双刃剑。如果使用得当,使用Vue可以使你的工作更加轻松。如果不小心,它也会使你的代码混乱不堪。
使用Vuex之前,你应该先了解四个主要概念:状态,getter,突变和行动。一个简单的Vuex状态在商店中的这些概念中操作数据。Vuex中的映射提供了一种从中检索数据的好方法。
在文中,我将演示如何映射Vuex存储中的数据。如果你熟悉Vuex基础,那么这些内容将会帮你编写更简洁,更便于维护的代码。
本文假设你了解Vue。js和Vuex的基础知识。
Vuex中的映射是什么?
Vuex中的映射使你可以将状态中的任何一种属性(getter,突变和行动)绑定到组件中的计算属性,并直接使用状态中的数据。
下面是一个简单的Vuex商店例子,其中测试数据位于状态中。
import Vue 得到& # 39;vue # 39; import Vuex 得到& # 39;vuex& # 39; Vue.use (Vuex) const store =, new Vuex.Store ({ ,,状态:{ ,,,数据:,“test data" ,,} })
如果要从国家中访问<代码> 代码>的数据值,则可以在Vue。js组件中执行以下操作。
计算:,{ ,,,,,,,getData () { ,,,,,,,,return 这。store.state.data美元 ,,,,,,,} ,,,}
上面的代码可以工作,但是随着状态数据量的开始增长,很快就会变得很难看。
例如:
import Vue 得到& # 39;vue # 39; import Vuex 得到& # 39;vuex& # 39; Vue.use (Vuex) const store =, new Vuex.Store ({ ,,状态:{ 用户:,,,,{ ,,,,,,,,, ,,,,,,,年龄:23岁 ,,,,,,,角色:用户 ,,,,,,,数据:{ ,,,,,,,,,的名字:“user name" ,,,,,,,,,地址:“user address" ,,,,,,,} ,,,}, ,,,服务:,{}, ,,,medical_requests:, {}, ,,,任命:,{}, ,,,} ,,} })
要从处于国家中的用户对象获取用户名:
计算:,{ ,,,,,,,getUserName () { ,,,,,,,,return 这。store.state.user.data.name美元 ,,,,,,,} ,,,}
这样可以完成工作,但是还有更好的方法。
映射状态
要将国家映射到Vue。js组件中的计算属性,可以运行以下命令。
import {, mapGetters },得到& # 39;vuex& # 39;; export 默认{ ,,,:计算,{ ,,,,,,,…mapState ([ ,,,,,,,,,,,& # 39;用户# 39; ,,,,,,,) ,,,} }
现在你可以访问组件中的整个用户对象。
你还可以做更多的事,例如把对象从国家添加到<代码> mapState 代码>方法。
import {, mapGetters },得到& # 39;vuex& # 39;; export 默认{ ,,,:计算,{ ,,,,,,,…mapState ([ ,,,,,,,,,,,& # 39;用户# 39; ,,,,,,,,,,,& # 39;服务# 39; ,,,,,,,) ,,,} }
如你所见,这要干净得多。可以通过以下方式轻松访问用户名:
{{user.data.name}}
代码>对<代码>服务象和映射的许多其他的值也是如此。
你注意到我们是如何将数组传递给<代码> mapState() 代码>的吗?如果需要为值指定其他名称,则可以传入一个对象。
import {, mapGetters },得到& # 39;vuex& # 39;; export 默认{ ,,,:计算,{ ,,,,,,,…mapState ({ ,,,,,,,,,,,userDetails: & # 39;用户# 39; ,,,,,,,,,,,userservice: & # 39;服务# 39; ,,,,,,,}) ,,,} }
现在可以通过简单地调用<代码> userDetails> 代码来引用<代码>用户代码>。
何时映射整个国家
根据经验,仅当状态中有大量数据,并且组件中全部需要它们时,才应该映射。
在上面的例子中,如果我们只需要一个值(例如<代码>用户名> 代码),则映射整个用户对象就没有多大意义。
在映射时,整个对象将会全部加载到内存中。实际上我们并不想继续把不需要的数据加载到内存中,因为这将是多余的,并且从长远来看会影响性能。
映射getter
映射getter的语法与<代码> mapState 代码>函数相似。