iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vuex中的state属性怎么用
  • 482
分享到

vuex中的state属性怎么用

2023-06-30 00:06:47 482人浏览 薄情痞子
摘要

这篇“Vuex中的state属性怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vuex中的state属性怎么用”文章吧

这篇“Vuex中的state属性怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vuex中的state属性怎么用”文章吧。

state属性介绍

state属性是Vuex中用于存放组件之间共享的数据;也就是说,我们把一些组件之间共享的状态主要存放在state属性中;它采用的是单一状态树——用一个对象就包含了全部的应用层级状态。这也意味着,每个应用将仅仅包含一个 store 实例。单一状态树让我们能够直接地定位任一特定的状态片段,在调试的过程中也能轻易地取得整个当前应用状态的快照。

state的使用

html中我们可以直接省略 this 关键字 ,直接使用 $store.state.状态名(变量名) 来访问 vuex 中的存储的状态;

① 抽离出去的state.js文件

export default {  loadingFlag: true,  // 用于保存已选类别标签  changedLableList: [    { name: '头条', class: 'iconfont icon-jinrishouru', url: 'topnews/index' },    { name: '苹果', class: 'iconfont icon-pingguoapple', url: "apple/index" },    { name: 'NBA', class: 'iconfont icon-tiyu-lanqiu', url: "nba/index" },    { name: '创业', class: 'iconfont  icon-chaxunchuangyebankaitongqingkuang', url: "startup/index" },    { name: '足球', class: 'iconfont icon-swticonzuqiu', url: "football/index" },    { name: '体育', class: 'iconfont icon-paobu', url: "tiyu/index" }  ]}

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

import Vue from 'vue'import Vuex from 'vuex'import mutations from './mutations'import state from './state'import actions from './actions'import getters from './getters'// 安装插件Vue.use(Vuex)// 创建对象export default new Vuex.Store({  state,  mutations,  actions,  getters})

③ 在组件中使用

<div class="flex-content">          <div class="lable-items" v-for="(item, index) in $store.state.changedLableList" :key="index" @click="decrementTypeLable(index)">            <div class="item">              <div><i :class="item.class"></i></div>              <span>{{ item.name }}</span>            </div>          </div>        </div>

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

computed: {    title() {      return this.$route.meta.title    },    changedLableList() {      return this.$store.state.changedLableList    },    alternativeLableList() {      return this.$store.state.alternativeLableList    }  },

扩展

为什么要在组件的computed计算属性中使用不能放到data属性中?

data 中的内容只会在 created 钩子函数触发前初始化一次,类似于我们直接写 const data = { foo: 123 }这样,这时属性的值是纯粹的字面量,而不是所谓的【缓存】(没有 Cache Miss 哪来的缓存?)。JS字面量赋值后显然不会自动更新。

最简单的例子:

let b = ‘xxx' // 相当于state中的数据let a = b // 相当于data初始化时,将b的值赋值给了ab = ‘xyz' // 这时对于原始类型,a 肯定还是 ‘xxx'

换句话说,data 中内容依赖变更时,data 属性不会变更(它的设计目标就是保存组件的局部状态数据而已)。而 computed则是通过【依赖追踪】实现的,在 computed 求值时引用的 Vue 变量变化时,会触发对 computed 的重新计算。所以我们可以使用computed 去引用 Vuex 状态变量,从而使得依赖追踪生效。或者,将 Vuex 状态变量通过 mapState() 方法映射为 computed 也是一个很方便的选择。

vuex的State

state 是Vuex中的基本数据,state 上存放的就是所谓的状态。当没有使用 state 的时候,直接在 data 中进行初始化,有了 state 之后,我们就把 data 上的数据转移到 state 上去了。

单一状态树

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

单一状态树让我们能够直接地定位任一特定的状态片段,在调试的过程中也能轻易地取得整个当前应用状态的快照。

在Vue组件中获得 Vuex 状态

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

示例:

例如我们在state中定义一个count属性,给它赋一个值为10,store.js文件内容如下所示:

import Vue from 'vue' // 引入vueimport Vuex from 'vuex' // 引入vuexVue.use(Vuex)  const state = {    count: 10}export default new Vuex.Store({    state})

然后创建一个 Counter组件,在组件中返回count,内容如下所示:

const Counter = {  template: `<div> count的值为:{{ count }}</div>`,  computed: {    count () {      return store.state.count  //返回store实例的count状态    }  }}

每当 store.state.count 变化的时候,都会重新求取count属性,并刷新界面。

这种模式依赖于全局的管理员 store,如果模块多了,那么每个模块或者页面只要用到了这个 state 里面的数据,都得把 store 引入进来,这样的操作确实有点难受。所以出现了下面这种解决办法。

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

new Vue({  el: '#app',  store,  // 根组件通过store选项将store实例注入所有地子组件  // 子组件  components: { Counter },  template: `    <div class="app">      <counter></counter>    </div>  `})

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

<!DOCTYPE html><html>  <head>    <meta charset="utf-8">    <title>侠课岛</title>  </head>  <body>    <h2>侠课岛欢迎你</h2>    <div id="app"></div>  </body></html>

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

vuex中的state属性怎么用

mapState辅助函数

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

示例:

在使用mapState函数之前,需要先引入它:

import { mapState } from 'vuex'

引入后才可以开始使用,它两种用法,可以接受一个对象或接受一个数组

对象用法如下:

import { mapState } from 'vuex'export default {  // 下面这两种写法都可以  computed: mapState({    // 组件内的每一个属性函数都会获得一个默认参数state,然后通过state直接获取它的属性    count: state => state.count,    // 'count' 直接映射到state对象中的count,相当于this.$store.state.count    count: 'count'   })}

数组用法如下所示:

// 当映射的计算属性的名称与 state 的子节点名称相同时,我们也可以给mapState传一个字符串数组。export default {    computed: mapState([ // 数组      'count'    ])}

以上就是关于“vuex中的state属性怎么用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: vuex中的state属性怎么用

本文链接: https://www.lsjlt.com/news/326891.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vuex中的state属性怎么用
    这篇“vuex中的state属性怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vuex中的state属性怎么用”文章吧...
    99+
    2023-06-30
  • vuex中的state属性解析
    目录state属性介绍state的使用扩展vuex的State单一状态树在Vue组件中获得 Vuex 状态mapState辅助函数state属性介绍 state属性是Vuex中用于存...
    99+
    2024-04-02
  • css中的animation-play-state属性怎么用
    这篇文章给大家分享的是有关css中的animation-play-state属性怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   CSS3animation-play-...
    99+
    2024-04-02
  • vuex中怎么操作state对象
    vuex中怎么操作state对象,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Vuex是什么?VueX 是一个专门为 Vue.js 应用设...
    99+
    2024-04-02
  • Vuex中的State和Getter有什么用
    这篇文章主要介绍Vuex中的State和Getter有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vuex 的内脏由五部分组成:State、Getter、Mutation、Action 和 Module。本篇...
    99+
    2023-06-21
  • Vuex给state中的对象新添加属性遇到的问题及解决
    目录Vuex给state中的对象新添加属性遇到的坑向vuex对象中增加新的属性需要注意总结Vuex给state中的对象新添加属性遇到的坑 state.js中有一个空对象obj: ex...
    99+
    2023-01-10
    Vuex state对象 state对象添加属性 state对象新添加属性问题
  • Vuex给state中的对象新添加属性遇到问题如何解决
    这篇文章主要介绍“Vuex给state中的对象新添加属性遇到问题如何解决”,在日常操作中,相信很多人在Vuex给state中的对象新添加属性遇到问题如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue...
    99+
    2023-07-04
  • vuex的state对象怎么获取
    这篇文章主要介绍了vuex的state对象怎么获取的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vuex的state对象怎么获取文章都会有所收获,下面我们一起来看看吧。Vuex是什么?VueX 是一个专门为 V...
    99+
    2023-07-04
  • 详解Vuex的属性
    目录状态管理模式Mutation需遵守Vue的响应规则Vuex是专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预...
    99+
    2022-11-13
    Vuex的属性 Vuex属性
  • vuex 中怎么利用state监听数组变化
    这期内容当中小编将会给大家带来有关vuex 中怎么利用state监听数组变化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。import Vue fro...
    99+
    2024-04-02
  • React中state属性和生命周期的使用
    目录一、React组件的state属性和生命周期1、state的定义2、更新状态(state)3、组件的生命周期(1)挂载(mount)(2)案例(隐藏或显示实时更新的计时器)(3)...
    99+
    2023-02-12
    React state属性 state生命周期 React生命周期
  • 详解Vuex的属性和作用
    目录Vuex是什么?Vuex的5个属性vuex 的 State 特性是? vuex 的 Getter 特性是? vuex 的 mauation 特性是? vuex 的 action ...
    99+
    2024-04-02
  • vuex的属性有哪些
    今天小编给大家分享一下vuex的属性有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 ...
    99+
    2024-04-02
  • React三大属性之state有什么用
    这篇文章给大家分享的是有关React三大属性之state有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。React中很多地方需要用到数据,这在React中被叫做状态,我们需要一个专门管理状态的方法,于是st...
    99+
    2023-06-14
  • vuex中有哪多少种属性
    vuex中有5种属性,分别是State、Getter、Action、Mutation、Module。State是数据源存放地,对应于一般Vue对象里面的data。Getter能够对State进行计算操作。Action与Mutation相似,...
    99+
    2024-04-02
  • React 三大属性之state的使用详解
    目录类组件函数组件setState的坑 React中很多地方需要用到数据,这在React中被叫做状态,我们需要一个专门管理状态的方法,于是state相关的就诞生了。state应该被要...
    99+
    2024-04-02
  • Vuex属性和作用的示例分析
    这篇文章给大家分享的是有关Vuex属性和作用的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Vuex是什么?VueX是一个专门为 Vue.js 应用设计的状态管理架构,统一管理和维护各个vue组件的可变化...
    99+
    2023-06-22
  • vuex获取state对象中值的所有方法小结(module中的state)
    目录vuex获取state对象中的值直接从store实例取值 使用mapState取值的多种方法使用module中的state vuex调用state数据第一种第...
    99+
    2024-04-02
  • Vuex中如何getters动态获取state的值
    目录Vuex getters动态获取state的值案例说明Vuex state值更改但是getters未更新实现效果Vuex getters动态获取state的值 在做项目时,get...
    99+
    2024-04-02
  • weex中Vuex state如何使用storage持久化
    这篇文章主要介绍weex中Vuex state如何使用storage持久化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在weex里使用Vuex作为state管理工具,问题来了,如...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作