Vuex中的State使用介绍


Posted in Javascript onJanuary 19, 2019

现在在上一篇为什么要使用Vuex的介绍理解基础上使用Vuex中的State,一个正面例子来证实,同时也介绍一下Vue核心概念State。

Vuex 使用单一状态树——是的,用一个对象就包含了全部的应用层级状态。至此它便作为一个“唯一数据源 (SSOT)”而存在。这也意味着,每个应用将仅仅包含一个 store 实例。单一状态树让我们能够直接地定位任一特定的状态片段,在调试的过程中也能轻易地取得整个当前应用状态的快照。

单状态树和模块化并不冲突——在后面的章节里我们会讨论如何将状态和状态变更事件分布到各个子模块中。

Vuex的使用

引入Vuex

方式一(推荐使用):

首先我们在 vue.js 2.0+ 开发环境中安装 vuex :

npm install vuex --save

方式二:

1.在package.json中的dependencies字段加入:"vuex": "^3.0.0"后:

"dependencies": {
  "vue": "^2.5.2",
  "vue-router": "^3.0.1",
  "vuex": "^3.0.0"
 },

2.终端cd到项目目录然后执行:npm install安装即可。然后在运行项目

使用Vuex

1.在 src/main.js全局 中加入 :

import Vue from 'vue'
import App from './App'
import router from './router'
// 全局加入vuex
import Vuex from 'vuex'
//通过Vue.use()来使用这个Vuex
Vue.use(Vuex)
// 引入我们分离出来的vuex文件
import {store} from './store/store'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
 el: '#app',
 // 把 store 对象提供给 “store” 选项,这可以把 store 的实例注入所有的子组件;这里可以简写成一个store
 store:store,//所有的组件对象都多了一个属性:$store
 router,
 components: { App },
 template: '<App/>'
})

Vuex中的State使用介绍

2.在src目录下新建store文件夹;在该文件夹下新建store.js文件。store.js中代码如下:

// 在分离出来的vuex文件中安装 Vuex 
import Vue from 'vue' 
import Vuex from 'vuex' 
Vue.use(Vuex) 
export const store = new Vuex.Store({ 
  state: { // 把页面显示数据写在store.js文件 
    goodsList: [ 
      { name: '赣州橙子', price: '8.8' }, 
      { name: '新疆哈密瓜', price: '2.0' }, 
      { name: '山东大枣', price: '3.2' }, 
      { name: '阳澄湖大闸蟹', price: '10.0' } 
    ] 
  } 
})

3.获取数据。

由于 Vuex 的状态存储是响应式的,从 store 实例中读取状态最简单的方法就是在计算属性中返回某个状态或直接使用$store.state.属性名获取vuex中的数据。通过在根实例中注册 store 选项,该 $store 实例会注入到根组件下的所有子组件中,且子组件能通过 this.$store 访问到。

page3.vue和page4.vue代码:

page3.vue

<template>
  <div>
    <h2>我是第一个页面</h2><br>
    <router-link to='/page4'>查看第二个页面</router-link>
    <ul class="ul_list">
      <li v-for="item in list">
        <p class="name">商品:{{item.name}}</p>
        <p class="price">价格:¥{{item.price}}</p>
      </li>
    </ul>
  </div>
</template>
<script>
 export default {
   data() {
    return {
      // 直接作为data()中属性值使用
      list: this.$store.state.goodsList,
    }
   },
   mounted() {
    //  通过钩子函数使用
    //  this.list = this.$store.state.goodsList
   },
  //  计算属性
   computed: {
    list() { // 获取store中的数据
      return this.$store.state.goodsList;
    }
   },
  }
</script>

组件仍然保有局部状态

使用 Vuex 并不意味着你需要将所有的状态放入 Vuex。虽然将所有的状态放到 Vuex 会使状态变化更显式和易调试,但也会使代码变得冗长和不直观。如果有些状态严格属于单个组件,最好还是作为组件的局部状态。你应该根据你的应用开发需要进行权衡和确定。

效果

Vuex中的State使用介绍

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
jscript之List Excel Color Values
Jun 13 Javascript
ie9 提示'console' 未定义问题的解决方法
Mar 20 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
Oct 09 Javascript
JavaScript数据结构与算法之链表
Jan 29 Javascript
Jquery遍历select option和添加移除option的实现方法
Aug 26 Javascript
原生ajax处理json格式数据的实例代码
Dec 25 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
JavaScript无操作后屏保功能的实现方法
Jul 04 Javascript
layui框架table 数据表格的方法级渲染详解
Aug 19 Javascript
jQuery zTree树插件的使用教程
Aug 16 jQuery
vue设置动态请求地址的例子
Nov 01 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
Feb 05 Javascript
为什么要使用Vuex的介绍
Jan 19 #Javascript
Vue核心概念Getter的使用方法
Jan 18 #Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 #Javascript
JavaScript数据结构之栈实例用法
Jan 18 #Javascript
Vue核心概念Action的总结
Jan 18 #Javascript
js取小数点后两位四种方法
Jan 18 #Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
Jan 18 #jQuery
You might like
php strlen mb_strlen计算中英文混排字符串长度
2009/07/10 PHP
PHP实现的简单mock json脚本分享
2015/02/10 PHP
php中namespace use用法实例分析
2016/01/22 PHP
浅谈php使用curl模拟多线程发送请求
2019/03/08 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
JS 实现双色表格实现代码
2009/11/24 Javascript
jQuery UI-Draggable 参数集合
2010/01/10 Javascript
js中判断控件是否存在
2010/08/25 Javascript
js里的prototype使用示例
2010/11/19 Javascript
javascript版2048小游戏
2015/03/18 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
原生JS实现垂直手风琴效果
2017/02/19 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
python中base64加密解密方法实例分析
2015/05/16 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
详解python中的模块及包导入
2019/08/30 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
优秀学生自我鉴定范例
2013/12/18 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
新手初学Java List 接口
2021/07/07 Java/Android