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 相关文章推荐
在IE模态窗口中自由查看HTML源码的方法
Mar 08 Javascript
神奇的代码 通杀各种网站-可随意修改复制页面内容
Jul 17 Javascript
IE与FireFox中的childNodes区别
Oct 20 Javascript
基于jquery的点击链接插入链接内容的代码
Jul 31 Javascript
jquery给图片添加鼠标经过时的边框效果
Nov 12 Javascript
详解Document.Cookie
Dec 25 Javascript
jQuery 插件封装的方法
Nov 16 Javascript
Bootstrap 网格系统布局详解
Mar 19 Javascript
jquery中有哪些api jQuery主要API
Nov 20 jQuery
结合Vue控制字符和字节的显示个数的示例
May 17 Javascript
JS代码优化的8点建议
Feb 04 Javascript
vscode中使用npm安装babel的方法
Aug 02 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模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
Admin generator, filters and I18n
2011/10/06 PHP
php读取excel文件的简单实例
2013/08/26 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
使用Pyrex来扩展和加速Python程序的教程
2015/04/13 Python
python opencv之SIFT算法示例
2018/02/24 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
python zip()函数的使用示例
2020/09/23 Python
运行Python编写的程序方法实例
2020/10/21 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
英国现代绅士品牌:Hackett
2017/12/17 全球购物
德国网上超市:myTime.de
2019/08/26 全球购物
学生就业推荐信
2013/11/13 职场文书
办公室岗位职责
2014/02/12 职场文书
学校拾金不昧表扬信
2015/01/16 职场文书
听课评课活动心得体会
2016/01/15 职场文书
《活见鬼》教学反思
2016/02/24 职场文书