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 相关文章推荐
使用onbeforeunload属性后的副作用
Mar 08 Javascript
js escape,unescape解决中文乱码问题的方法
May 26 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
May 15 Javascript
JavaScript中双叹号!!作用示例介绍
Sep 21 Javascript
javascript 内置对象及常见API详细介绍
Nov 01 Javascript
获取select的value、text值的简单示例(jquery与javascript)
Dec 07 Javascript
js放到head中失效的原因与解决方法
Mar 07 Javascript
基于javascript的异步编程实例详解
Apr 10 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 jQuery
Node.js事件的正确使用方法
Apr 05 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
React实现动效弹窗组件
Jun 21 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手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
php接口隔离原则实例分析
2019/11/11 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
js Flash插入函数免激活代码
2009/03/31 Javascript
javascript 解析后的xml对象的读取方法细解
2009/07/25 Javascript
JQUERY获取form表单值的代码
2010/07/17 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
对python中Json与object转化的方法详解
2018/12/31 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
如何在 Django 模板中输出 &quot;{{&quot;
2020/01/24 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
python3中sys.argv的实例用法
2020/04/24 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
毕业生造价工程师求职信
2013/10/17 职场文书
自荐信封面
2013/12/04 职场文书
借款协议书范本
2014/04/22 职场文书
毕业论文致谢范文
2015/05/14 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
box-shadow单边阴影的实现
2023/05/21 HTML / CSS