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 相关文章推荐
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
Oct 26 Javascript
jQuery性能优化的38个建议
Mar 04 Javascript
JS实现窗口加载时模拟鼠标移动的方法
Jun 03 Javascript
五种js判断是否为整数类型方式
Dec 03 Javascript
轻松实现jquery手风琴效果
Jan 14 Javascript
详解js前端代码异常监控
Jan 11 Javascript
Bootstrap table简单使用总结
Feb 15 Javascript
微信小程序自定义组件
Aug 16 Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 Javascript
使用Vue制作图片轮播组件思路详解
Mar 21 Javascript
深入理解Vue 的钩子函数
Sep 05 Javascript
详解mpvue实现对苹果X安全区域的适配
Jul 31 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 年龄计算函数(精确到天)
2012/06/07 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
Python类的用法实例浅析
2015/05/27 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
Python yield 使用方法浅析
2017/05/20 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
Python字符串对象实现原理详解
2019/07/01 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
招聘专员岗位职责
2014/03/07 职场文书
航空学院求职信
2014/06/11 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL