基于vue-cli,测试非父子传值时,碰到 keep-alive的神奇
非父子传值测试
一直都很好奇非父子传值到底如何,结果入坑许久才爬出来,才知道在脚手架里测试就是坑。
问题: 测试非父子传值时,由于组件之间是通过路由进行跳转,值传过去又被刷掉
思路: 因为路由跳转,相当于重排(不太确定,感觉不是重绘),因为数据又回到最原始的值
首先我是基于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的神奇的更多相关文章
- vue传值(父子传值,非父子传值)
vue组件传值,分为父子传值和非父子传值,父子传值又分为父传子和子传父. 组件之间的传值,实现了数据的联动,是从操作Dom到操作数据一个跳转性的突破,在学习vue双向绑定原理之后, 这种观念就应该继续 ...
- vue父子传值与非父子传值
大概梳理下传值的几种方式 一:父子组件传值 props方式 子组件对外暴露方法并向父组件传递由于触发方法导致的值的变化,父组件接收子组件传递来的值:子组件接收父组件传递来的值,并根据传递来的值在子组件 ...
- Vue兄弟组件(非父子组件)状态共享与传值
前言:网上大部分文章写的有点乱,很少有讲得易懂的文章. 所以,我写了篇在我能看得懂的基础上又照顾到大家的文章 =.= 作者:X1aoYE 备注:此文原创,转载请注明~ 内容里的<br> ...
- 基于vue cli 3.0创建前端项目并安装cube-ui
前提条件: 安装node.js. 国内的开发者最好先配置淘宝镜像. 之后用cnpm来代替npm命令. 项目创建过程: 打开cmd,输入命令进入目标工作空间,以本机项目为例: cd /d d: cd D ...
- vue第九单元(非父子通信 events 单向数据流)
第九单元(非父子通信 events 单向数据流) #课程目标 了解非父子组件通信的原理,熟练实现非父子组件间的通信(重点) 了解单向数据流的含义,并且明白单向数据流的好处 #知识点 #1.非父子组件间 ...
- 基于@vue/cli 的构建项目(3.0)
1.检测node的版本号 注意:1.Vue CLI需要Node.js的版本 8.9+(推荐8.11.0+) 所以在安装Vue CLI之前先看下node的版本 node -v 2.安装@vue/cli ...
- 基于Vue cli生成的Vue项目的webpack4升级
前面的话 本文将详细介绍从webpack3到webpack4的升级过程 概述 相比于webpack3,webpack4可以零配置运行,打包速度比之前提高了90%,可以直接到ES6的代码进行无用代码剔除 ...
- vue组件基础之父子传值
可以看出数据从后端获取过来,最外层的父组件接收数据,子组件不能直接获取,必须由父组件传递,此时使用props,并且父组件的值更新后,子组件的值也会随之更新,但是反过来通过修改子组件props来影响父组 ...
- Vue组件中的父子传值
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- 安装和使用php的mcrypt扩展
程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障.PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库和. 其中,Mcrypt扩展库可以实 ...
- 大数据相关的面试题(摘自网络)hbase,kafka,spark
1.讲讲你做的过的项目, 项目里有哪些难点重点呢? kafkaDirect ES /hive kafka producer 难点值得一提的有两点: 1.rdd中用到外部变量的时候如何处 ...
- 20145314郑凯杰《信息安全系统设计基础》第9周学习总结 PART B
20145314郑凯杰<信息安全系统设计基础>第9周学习总结 PART B 明确教材学习目标 注意每个系统调用的参数.返回值,会查帮助文档 阅读教材,完成课后练习(书中有参考答案),考核: ...
- PostgreSQL 递归查询 (转)
数据库中的数据存在父子关系(单继承,每一条记录只有一个父亲). 如果要查询一条记录以及他的所有子记录,或者要查询一条记录以及他的所有父记录.那么递归查询就再合适不过了.可以简化复杂的SQL语句 现在 ...
- python使用百度api翻译中英文
python使用百度api翻译中英文 写程序取变量名的时候,常常需要翻译单词,或者将中文翻译成英语.有道词典,必应词典都很好,可是...命令行习惯了还是觉得用在cmd里面调出程序使用起来也许会更爽.于 ...
- CORE MVC 自定义认证
微软的认证体系,集成了EF,和它的表结构,对于我们已有的系统,或者想高度自定义的人,该怎么办呢? 答案在: https://docs.microsoft.com/en-us/aspnet/core/s ...
- SQL优化的若干原则
SQL语句:是对数据库(数据)进行操作的惟一途径:消耗了70%~90%的数据库资源:独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低:可以有不同的写法:易 ...
- mac下搭建基于vue-cli 3.0的Element UI 项目
1.安装yarn管理工具(包含node.js); 2.安装全局vue-cli全家桶: yarn global add @vue/cli 3.创建.测试一个vue-cli项目: vue create a ...
- python 匹配中文和英文
在处理文本时经常会匹配中文名或者英文word,python中可以在utf-8编码下方便的进行处理. 中文unicode编码范围[\u4e00-\u9fa5] 英文字符编码范围[a-zA-Z] 此时匹配 ...
- 从U盘安装linux(前人踩坑后人乘凉)
今天踩了一个大坑,网上的教程从u盘安装linux少了一个关键步骤导致我挣扎了两个小时 废话不多说,开始需要准备一些东西 1.从官网下载一个Ubuntu 10.04的镜像 2.一个大于等于1G的支持启动 ...