全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Vue爬坑之vuex初识

在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用  props 或者 $emit 等方式.

但是如果是大型项目,很多时候都需要在子组件之间传递数据,使用之前的方式就不太方便。Vue 的状态管理工具 Vuex 完美的解决了这个问题。

 一、安装并引入 Vuex

项目结构:

 首先使用 npm 安装 Vuex

cnpm install vuex -S

然后在 main.js 中引入

import Vue from 'vue'
import App from './App'
import Vuex from 'vuex'
import store from './vuex/store'

Vue.use(Vuex)

/* eslint-disable no-new */
new Vue({
 el: '#app',
 store,
 render: h => h(App)
})

二、构建核心仓库 store.js

Vuex 应用的状态 state 都应当存放在 store.js 里面,Vue 组件可以从 store.js 里面获取状态,可以把 store 通俗的理解为一个全局变量的仓库。

但是和单纯的全局变量又有一些区别,主要体现在当 store 中的状态发生改变时,相应的 vue 组件也会得到高效更新。

 在 src 目录下创建一个 vuex 目录,将 store.js 放到 vuex 目录下

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
 // 定义状态
 state: {
  author: 'Wise Wrong'
 }
})

export default store

这是一个最简单的 store.js,里面只存放一个状态 author

虽然在 main.js 中已经引入了 Vue 和 Vuex,但是这里还得再引入一次

三、将状态映射到组件

<template>
 <footer class="footer">
  <ul>
   <li v-for="lis in ul">{{lis.li}}</li>
  </ul>
  <p>
   Copyright&nbsp;&copy;&nbsp;{{author}} - 2016 All rights reserved
  </p>
 </footer>
</template>

<script>
 export default {
  name: 'footerDiv',
  data () {
   return {
    ul: [
     { li: '琉璃之金' },
     { li: '朦胧之森' },
     { li: '缥缈之滔' },
     { li: '逍遥之火' },
     { li: '璀璨之沙' }
    ]
   }
  },
  computed: {
   author () {
    return this.$store.state.author
   }
  }
 }
</script>

这是 footer.vue 的 html 和 script 部分

主要在 computed 中,将 this.$store.state.author 的值返回给 html 中的 author

页面渲染之后,就能获取到 author 的值

 

四、在组件中修改状态

然后在 header.vue 中添加一个输入框,将输入框的值传给 store.js 中的 author

这里我使用了 Element-UI 作为样式框架

上面将输入框 input 的值绑定为 inputTxt,然后在后面的按钮 button 上绑定 click 事件,触发 setAuthor 方法

methods: {
 setAuthor: function () {
   this.$store.state.author = this.inpuTxt
 }
}

在 setAuthor 方法中,将输入框的值 inputTxt 赋给 Vuex 中的状态 author,从而实现子组件之间的数据传递

五、官方推荐的修改状态的方式

上面的示例是在 setAuthor 直接使用赋值的方式修改状态 author,但是 vue 官方推荐使用下面的方法:

首先在 store.js 中定义一个方法 newAuthor,其中第一个参数 state 就是 $store.state,第二个参数 msg 需要另外传入

 然后修改 header.vue 中的 setAuthor 方法

这里使用 $store.commit 提交 newAuthor,并将 this.inputTxt 传给 msg,从而修改 author

这样显式地提交(commit) mutations,可以让我们更好的跟踪每一个状态的变化,所以在大型项目中,更推荐使用第二种方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Vue  # vuex  # Vue.js实战之Vuex的入门教程  # 基于vue2.0+vuex的日期选择组件功能实现  # Vuex之理解Store的用法  # 如何快速上手Vuex  # Vuex之理解state的用法实例  # 详解Vue中状态管理Vuex  # Vue 2.X的状态管理vuex记录详解  # 输入框  # 推荐使用  # 这是  # 全局变量  # 是在  # 放在  # 也会  # 目录下  # 第一个  # 就能  # 让我们  # 不太  # 又有  # 这个问题  # 这是一个  # 第二个  # 并将  # 还得  # 可以使用  # 种方法 


相关文章: 如何在IIS服务器上快速部署高效网站?  上海网站制作开发公司,上海买房比较好的网站有哪些?  SQL查询语句优化的实用方法总结  建站之星后台密码遗忘或太弱?如何重置与强化?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  Java解压缩zip - 解压缩多个文件或文件夹实例  宝塔Windows建站如何避免显示默认IIS页面?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  网站app免费制作软件,能免费看各大网站视频的手机app?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  韩国服务器如何优化跨境访问实现高效连接?  建站之星安装后如何配置SEO及设计样式?  如何选择美橙互联多站合一建站方案?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  网站图片在线制作软件,怎么在图片上做链接?  家具网站制作软件,家具厂怎么跑业务?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  网站制作网站,深圳做网站哪家比较好?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何用VPS主机快速搭建个人网站?  定制建站策划方案_专业建站与网站建设方案一站式指南  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  如何选择高效可靠的多用户建站源码资源?  广平建站公司哪家专业可靠?如何选择?  如何在建站之星绑定自定义域名?  如何用AWS免费套餐快速搭建高效网站?  建站之星安装后界面空白如何解决?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  python的本地网站制作,如何创建本地站点?  如何自定义建站之星模板颜色并下载新样式?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  建站三合一如何选?哪家性价比更高?  如何通过免费商城建站系统源码自定义网站主题与功能?  Python如何创建带属性的XML节点  如何在Windows 2008云服务器安全搭建网站?  威客平台建站流程解析:高效搭建教程与设计优化方案  广州商城建站系统开发成本与周期如何控制?  Python lxml的etree和ElementTree有什么区别  寿县云建站:智能SEO优化与多行业模板快速上线指南  建站168自助建站系统:快速模板定制与SEO优化指南  ,sp开头的版面叫什么?  c# 在高并发场景下,委托和接口调用的性能对比  如何在IIS7上新建站点并设置安全权限?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  导航网站建站方案与优化指南:一站式高效搭建技巧解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。