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 相关文章推荐
JS 面向对象的5钟写法
Jul 31 Javascript
JavaScript 事件冒泡简介及应用
Jan 11 Javascript
JS request函数 用来获取url参数
May 17 Javascript
javascript中方便增删改cookie的一个类
Oct 11 Javascript
判断某个字符在一个字符串中是否存在的js代码
Feb 28 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
Mar 03 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
谈一谈javascript中继承的多种方式
Feb 19 Javascript
详解Webpack实战之构建 Electron 应用
Dec 25 Javascript
vue组件入门知识全梳理
Sep 21 Javascript
vue使用Sass时报错问题的解决方法
Oct 14 Javascript
AJAX实现指定部分页面刷新效果
Oct 16 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
php中长文章分页显示实现代码
2012/09/29 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
PHP文件操作实例总结
2016/09/27 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
js中继承的几种用法总结(apply,call,prototype)
2013/12/26 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
python新手经常遇到的17个错误分析
2014/07/30 Python
Python的动态重新封装的教程
2015/04/11 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
Python中文编码知识点
2019/02/18 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
python 基于opencv操作摄像头
2020/12/24 Python
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
娇韵诗俄罗斯官方网站:Clarins俄罗斯
2020/10/03 全球购物
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
视光学毕业生自荐书范文
2014/02/13 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
庆六一活动总结
2014/08/29 职场文书
卖车协议书范例
2014/09/16 职场文书
个人收入证明范本
2015/06/12 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书