在 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,但是这里还得再引入一次

三、将状态映射到组件

  • {{lis.li}}

Copyright © {{author}} - 2016 All rights reserved

export default {

name: 'footerDiv',

data () {

return {

ul: [

{ li: '琉璃之金' },

{ li: '朦胧之森' },

{ li: '缥缈之滔' },

{ li: '逍遥之火' },

{ li: '璀璨之沙' }

]

}

},

computed: {

author () {

return this.$store.state.author

}

}

}

这是 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中常碰见的坑_Vue 与 Vuex 的第一次接触遇到的坑相关推荐

  1. vue中传值和传引用_vue prop属性传值与传引用示例

    vue prop属性传值与传引用示例 vue组件在prop里根据type决定传值还是传引用. 简要如下: 传值:String.Number.Boolean 传引用:Array.Object 若想将数组 ...

  2. vue中父子组件先后渲染_vue父子组件传值(子传父,非父子组件传值)

    1. 子组件向父组件传值 子组件: <template><div>子组件:<span>{{childValue}}</span><!-- 定义一个 ...

  3. vue中父子组件先后渲染_Vue中父子组件执行的先后顺序

    前几天,朋友向我提出了一个关于Vue中父子组件执行的先后顺序问题,相信很多朋友在学习的过程中也会遇到这个问题,所以我就在此提出我自己的一些小看法. 问题如下:请问下图中父子组件执行的先后顺序? 首先, ...

  4. vue中tab切换前端实现_vue实现Tab切换功能

    在项目开发中,我们经常会碰到Tab切换的功能,而在Vue中想实现这样的功能也应该有很多种,常用的三种应该是 Tab路由切换.Tab动态组件切换.通过v-show设置Tab显示隐藏.每种方法实现起来其实 ...

  5. vue中父子组件先后渲染_vue父子组件钩子函数的执行顺序

    加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount-& ...

  6. (转)Vue 爬坑之路(四)—— 与 Vuex 的第一次接触

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

  7. Vue 爬坑之路(四)—— 与 Vuex 的第一次接触

    2019独角兽企业重金招聘Python工程师标准>>> 在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用  props 或者 $emit 等方式 htt ...

  8. vue中父子组件先后渲染_VUE如何实现子父组件、父子组件、兄弟组件传值

    父子组件传值: 父组件定义: 代码示例 子父组件传值: 父组件方法定义: 子组件执行父组件方法定义: methods: { closeOrOpenLeftMenu() { if (this.isLef ...

  9. vue中弹窗input框聚焦_Vue 中如何让 input 聚焦?(包含视频讲解)

    作者:Michael Thiessen 译者:前端小智 来源:laracasts.com 点赞再看,养成习惯 本文 GitHub https://github.com/qq44924588... 上已 ...

最新文章

  1. shell中符号使用
  2. ASP的Server.UrlEncode和Asp.Net的Server.UrlEncode的返回结果不同
  3. TCP协议三次握手连接四次握手断开和DOS攻击
  4. 移动设备真机调试本地程序的Node.js【无需连wifi】
  5. ITK:计算灰度图像的梯度幅度
  6. TP的中间件:过滤处理HTTP的请求与响应
  7. 《ASP.NET MVC企业实战》(一) MVC开发前奏
  8. 多进程 VS 多线程
  9. 【转】mip-semi-fixed 走走又停停
  10. iOS 3DTouch
  11. 对软件研发项目管理的深入探讨
  12. 简单比较init-method,afterPropertiesSet和BeanPostProcessor
  13. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第2节 线程实现方式_11_Thread类的常用方法_sleep...
  14. mybatis的javaType和ofType
  15. MySQL进阶书籍推荐
  16. Canvas API基础知识总结
  17. 6个月内进轨,目标火星!马斯克刚刚发布最强“理想飞船”,称已达人类物理极限
  18. 旋转矩阵(方向余弦阵)
  19. OAI SDR LTE 基站部署
  20. python面试题(面试重点)

热门文章

  1. C语言找最大的int型数!_只愿与一人十指紧扣_新浪博客
  2. 收藏 | 多目标跟踪(MOT)入门
  3. 造成机器学习项目失败的7个原因
  4. 汇总 | OpenCV4中的非典型深度学习模型
  5. 【OpenCV 4开发详解】图像距离变换
  6. Eclipse搭建java分布式商城项目
  7. Linux编程_Shell脚本练习题
  8. 修改python编码
  9. 空间谱专题01:信号模型
  10. 关于软件开发你真正需要知道的几个事情