改变vuex里面state的值,vuex获取state

  改变vuex里面state的值,vuex获取state

  本文主要介绍了vuex中的状态属性,具有很好的参考价值。希望对你有帮助。如有错误或不足之处,请不吝赐教。

  

目录

   State属性介绍状态。使用vuex的扩展状态单状态树,在VUE组件中获得VueX状态映射状态辅助函数。

  

state属性介绍

  状态属性在Vuex中用于存储组件之间共享的数据;也就是说,我们主要在state属性中存储一些组件之间的共享状态;它使用单个状态树——来用一个对象包含所有应用级状态。这也意味着每个应用程序将只包含一个store实例。单个状态树允许我们直接定位任何特定的状态段,并且可以在调试期间轻松地拍摄当前应用程序状态的快照。

  

state的使用

  在HTML中,我们可以直接省略这个关键字,直接使用$ store.state.state名称(变量名)来访问vuex中的$ store.state

  拉出来的state.js文件。

  导出默认值{

  loadingFlag: true,

  //用于保存选中的类别标签

  changedablelist:[

  {name: headline ,class: icon font icon-jinrishouru ,URL: topnews/index},

  {名称:苹果,类别:图标字体图标-苹果,网址:苹果/指数 },

  {名称: NBA ,类别: icon font icon-tiyu-秋兰,url: nba/index },

  {名称:创业,类别: icon字体icon-chaxunchuangyebankaitongqingkuang ,网址: startup/index},

  {名称:足球,类别:图标字体图标-swticonzuqiu ,URL:足球/指数 },

  {名称:运动,类别:图标字体图标-跑步,URL:体育/指数 }

  ]

  }

  在index.js文件中导入state.js文件并注册。

  从“vue”导入Vue

  从“vuex”导入Vuex

  从导入突变。/突变

  从导入状态。/state

  从导入操作。/操作

  从导入getters。/getters

  //安装插件

  Vue.use(Vuex)

  //创建一个对象

  导出默认的新Vuex。商店({

  状态,

  突变,

  行动,

  吸气剂

  })

  用于组件。

  div class=弹性内容

   div class= lable-items v-for=(item,index)in $ store . state . changed ablelist :key= index @ click= decrement type lable(index)

  div class=item

  divi :class=item.class/i/div

  span{{ item.name }}/span

  /div

  /div

  /div

  在js代码中,必须使用这个。$store.state状态名(变量名)访问vuex中存储的状态;

  计算值:{

  title() {

  归还这个。$route.meta.title

  },

  changedlabelist(){

  归还这个。$ store . state . changed ablelist

  },

  alternativablelist(){

  归还这个。$ store . state . alternativablelist

  }

  },

  

扩展

  为什么应该在组件的computed calculation属性中使用,而不是在data属性中使用?

  data中的内容只会在创建的hook函数被触发之前初始化一次,类似于我们直接写const data={foo: 123}的时候。此时属性的值是纯文字的,而不是所谓的【缓存】(没有缓存缺失的缓存在哪里?)。JS文字显然不会在赋值后自动更新。

  最简单的例子:

  let= XXX //相当于状态中的数据

  let=b//相当于在数据初始化的时候把b的值赋给a。

  b= XYZ //此时,对于原类型,A必须仍然是 xxx

  换句话说,当数据中的内容依赖关系改变时,数据属性不会改变(它的设计目标是保存组件的本地状态数据)。Computed是通过依赖跟踪实现的。当计算的求值中引用的Vue变量发生变化时,它将触发计算的重新计算。因此,我们可以使用computed来引用Vuex状态变量,从而使依赖跟踪有效。或者,将Vuex状态变量映射到mapState()方法计算也是一个方便的选择。

  

vuex的State

  是state Vuex中的基础数据,所谓的state就是存储在state中。不使用状态时,直接在数据中初始化。有了状态,我们将把数据从数据转移到状态。

  

单一状态树

  Vuex使用单个状态树,即一个对象包含所有的状态数据。也就是说,如果我们定义了一个store实例,那么这个store实例中只有一个状态。作为状态构造器选项,定义了我们需要的所有基本状态参数。

  单个状态树允许我们直接定位任何特定的状态段,并且可以在调试期间轻松地拍摄当前应用程序状态的快照。

  

在Vue组件中获得 Vuex 状态

  从store实例读取状态的最简单方法是在计算属性中返回状态。

  示例:

  例如,我们在状态中定义了一个count属性,并将其赋值为10。store.js文件的内容如下:

  从“vue”导入Vue/导入Vue

  从“vuex”导入Vuex/导入Vuex

  Vue.use(Vuex)

  常量状态={

  计数:10

  }

  导出默认的新Vuex。商店({

  状态

  })

  然后创建一个计数器组件,并在组件中返回count,内容如下:

  常量计数器={

  模板:` div count的值为:{{ count}}/div `,

  计算值:{

  计数(){

  return . state . count//返回存储实例的计数状态

  }

  }

  }

  每当store.state.count发生变化时,count属性将被重新计算,并且界面将被刷新。

  此模式依赖于全局管理员存储。如果有更多的模块,那么每个模块或页面都必须引入存储,只要它使用这种状态的数据。这样的操作真的有点难受。于是出现了下面的解决方案。

  Vuex提供了一种机制,通过store选项将根组件的状态“注入”到每个子组件中:

  新Vue({

  埃尔: #app ,

  存储;//根组件通过store选项将store实例注入到其所有子组件中

  //子组件

  组件:{ Counter },

  模板:` 1

  div class=" app "

  计数器/计数器

  /div

  `

  })

  Vue项目index.html文件的内容如下:

  !声明文档类型

  超文本标记语言

  头

  meta charset=utf-8

  标题侠客岛/标题

  /头

  身体

  H1欢迎来到霞客岛/h1

  div id=app/div

  /body

  /html

  最后,我们使用npm run dev运行项目,浏览器中的输出结果如下图所示。如果我们更改count in state的值,页面将自动刷新:

  

mapState辅助函数

  当一个组件需要获得多个状态时,将所有这些状态声明为计算属性会有些重复和多余。为了解决这个问题,我们可以使用mapState辅助函数来帮助我们生成计算属性,这样你就可以少按几次键了。

  示例:

  在使用mapState函数之前,您需要先介绍一下它:

  从“vuex”导入{ mapState }

  在它被引进之前,你不能开始使用它。它有两种用途。它可以接受一个对象或一个数组。

  对象用法如下:

  从“vuex”导入{ mapState }

  导出默认值{

  //下面两种方式都可以写。

  计算的:mapState({

  //组件中的每个属性函数都会得到一个默认的参数state,然后通过state直接得到它的属性。

  count: state=state.count

  //count 直接映射到state对象中的计数,相当于这个。$store.state.count

  计数:“计数”

  })

  }

  数组的用法如下:

  //当map的计算属性名称与state的子节点名称相同时,我们也可以向mapState传递一个字符串数组。

  导出默认值{

  Computed: mapState([ //array

  “计数”

  ])

  }

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: