非父子传值测试

一直都很好奇非父子传值到底如何,结果入坑许久才爬出来,才知道在脚手架里测试就是坑。

问题: 测试非父子传值时,由于组件之间是通过路由进行跳转,值传过去又被刷掉

思路: 因为路由跳转,相当于重排(不太确定,感觉不是重绘),因为数据又回到最原始的值

首先我是基于vue-cli进行测试

//组件一
<template>
<div>
行到水穷处,坐看云起时!
<p>来自组件传来的id{{id}}</p>
<input type="text" v-model="id">
</div>
</template>
<script>
import bus from './../bus'
export default{
data() {
return {
id: 0
}
},
created() {
//获取组件2的数据
bus.$on('sendId', (id) => {
console.log(this.id, '我是组件000')
this.id = id
})
}
}
</script> //组件二
<template>
<div>
行到水穷处,坐看云起时!
<p>{{id}}</p>
<button @click="sendId">点击发送id</button>
</div>
</template>
<script>
import bus from './../bus'
export default{
data() {
return {
id: 2
}
},
methods: {
sendId(){
bus.$emit('sendId', this.id)
}
}
}
</script>

我在 router文件夹下的index.js中配置

export default new Router({
routes: [
{path: '/',
components: {
top: sibling1, //目的为了测试两个组件同时显示,值能否传递过去
left: sibling2
}
},
{path: '/si1', component: sibling1},
{path: '/si2', component: sibling2}
]
})

App.vue代码

<div id="app">
<router-link to="/si1">第一1</router-link>
<router-link to="/si2">第二2</router-link>
<router-view name="left"></router-view>
<router-view name="top"></router-view>
//使用keep-alive 是为了缓存组件,不用重新创建
<keep-alive>
<router-view></router-view>
</keep-alive>
</div>

使用 keep-alive 点击链接1 时, 数字被修改2



不适用keep-alive 点击链接1 时, 数字一直为0 参数传递过来又被覆盖

结论:

  • 如果不适用 keep-alive,在路由跳转时,相当于重新开启页面,之前传递的参数都会消失
  • 同时也熟悉了bus传值的一些局限,如何使用vuex就可以不用考虑这个

基于vue-cli,测试非父子传值时,碰到 keep-alive的神奇的更多相关文章

  1. vue传值(父子传值,非父子传值)

    vue组件传值,分为父子传值和非父子传值,父子传值又分为父传子和子传父. 组件之间的传值,实现了数据的联动,是从操作Dom到操作数据一个跳转性的突破,在学习vue双向绑定原理之后, 这种观念就应该继续 ...

  2. vue父子传值与非父子传值

    大概梳理下传值的几种方式 一:父子组件传值 props方式 子组件对外暴露方法并向父组件传递由于触发方法导致的值的变化,父组件接收子组件传递来的值:子组件接收父组件传递来的值,并根据传递来的值在子组件 ...

  3. Vue兄弟组件(非父子组件)状态共享与传值

      前言:网上大部分文章写的有点乱,很少有讲得易懂的文章. 所以,我写了篇在我能看得懂的基础上又照顾到大家的文章 =.= 作者:X1aoYE 备注:此文原创,转载请注明~  内容里的<br> ...

  4. 基于vue cli 3.0创建前端项目并安装cube-ui

    前提条件: 安装node.js. 国内的开发者最好先配置淘宝镜像. 之后用cnpm来代替npm命令. 项目创建过程: 打开cmd,输入命令进入目标工作空间,以本机项目为例: cd /d d: cd D ...

  5. vue第九单元(非父子通信 events 单向数据流)

    第九单元(非父子通信 events 单向数据流) #课程目标 了解非父子组件通信的原理,熟练实现非父子组件间的通信(重点) 了解单向数据流的含义,并且明白单向数据流的好处 #知识点 #1.非父子组件间 ...

  6. 基于@vue/cli 的构建项目(3.0)

    1.检测node的版本号 注意:1.Vue CLI需要Node.js的版本 8.9+(推荐8.11.0+) 所以在安装Vue CLI之前先看下node的版本 node -v 2.安装@vue/cli ...

  7. 基于Vue cli生成的Vue项目的webpack4升级

    前面的话 本文将详细介绍从webpack3到webpack4的升级过程 概述 相比于webpack3,webpack4可以零配置运行,打包速度比之前提高了90%,可以直接到ES6的代码进行无用代码剔除 ...

  8. vue组件基础之父子传值

    可以看出数据从后端获取过来,最外层的父组件接收数据,子组件不能直接获取,必须由父组件传递,此时使用props,并且父组件的值更新后,子组件的值也会随之更新,但是反过来通过修改子组件props来影响父组 ...

  9. Vue组件中的父子传值

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. 项目总结之HashMap问题

    在项目中我需要用另一个项目的中的方法,在另一个项目中的方法返回值是一个hashmap,返回的不是一个hashMap中存的对象而是Object对象.在一个项目中调用另一个项目中的方式是直接引入另一个项目 ...

  2. 001-navicat for oracle 12 破解安装

    1.首先软件包和破解文件都需要到我给的百度云盘地址下载,去官网下载的中文版破解不了,至于官网的英文版,我就不清楚了. (1)链接地址. https://pan.baidu.com/s/1jxj4uzg ...

  3. PKU 3267 The Cow Lexicon(动态规划)

    题目大意:给定一个字符串和一本字典,问至少需要删除多少个字符才能匹配到字典中的单词序列.PS:是单词序列,而不是一个单词 思路:                                     ...

  4. Spark高级数据分析· 3推荐引擎

    推荐算法流程 推荐算法 预备 wget http://www.iro.umontreal.ca/~lisa/datasets/profiledata_06-May-2005.tar.gz cd /Us ...

  5. Python3.x:pytesseract识别率提高(样本训练)

    Python3.x:pytesseract识别率提高(样本训练) 1,下载并安装3.05版本的tesseract 地址:https://sourceforge.net/projects/tessera ...

  6. JAVA面试题整理(2)-多线程/并发

    1.synchronized 的实现原理以及锁优化? 在JDK 5之前Java语言是靠synchronized关键字保证同步的.使用synchronized 关键字定义同步方法,或者在方法中使用syn ...

  7. hadoop2对应的eclipse插件使用

    1. eclipse插件安装步骤: a).把插件复制到eclipse安装目录plugins文件夹下 b).打开eclipse的Window---Preference---Hadoop M/R---指向 ...

  8. 优盘版Kali

    准备USB镜象 下载Kali linux. 如果你用的是Windows,下载Win32 Disk Imager. *nix类系统不需要额外的软件. 一块U盘(至少 2GB 容量). Kali Linu ...

  9. 爬虫之Xpath案例

    案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地. # tieba_xpath.py #!/usr/ ...

  10. SSH 登录时出现如下错误:Host key verification failed

       注意:本文相关 Linux 配置及说明已在 CentOS 6.5 64 位操作系统中进行过测试.其它类型及版本操作系统配置可能有所差异,具体情况请参阅相应操作系统官方文档. 问题描述 使用 SS ...