非父子传值测试

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

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

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

首先我是基于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. window7主题破解与恢复(复制)

    window7主题破解与恢复 1 2 3 分步阅读 windows7主题破解后可以换自己喜欢的主题,但也有一些弊端.这里帮助打家破解与恢复. 工具/原料 UniversalThemePatcher.e ...

  2. LightOJ - 1074 Extended Traffic (SPFA+负环)

    题意:N个点,分别有属于自己的N个busyness(简称b),两点间若有边,则边权为(ub-vb)^3.Q个查询,问从点1到该点的距离为多少. 分析:既然是差的三次方,那么可能有负边权的存在,自然有可 ...

  3. Twitter的分布式自增ID算法snowflake

    snowflake 分布式场景下获取自增id git:https://github.com/twitter/snowflake 解读: http://www.cnblogs.com/relucent/ ...

  4. 简单封装get和jsonp

    /** * 向服务器发送GET请求. *  * @param {type} url * @param {type} async 是否异步调用 * @param {type} fnCallback 回调 ...

  5. IDEA 2018.2破解

    最新的IDEA激活方式 使用网上传统的那种输入网址的方式激活不了,使用http://idea.lanyus.com/这个网站提供的工具进行 1.进入hosts文件中:C:\Windows\System ...

  6. springbcloud5----高可用

    package com.itmuch.cloud; import org.springframework.boot.SpringApplication; import org.springframew ...

  7. Django学习笔记之Django ORM相关操作

    一般操作 详细请参考官方文档 必知必会13条 <> all(): 查询所有结果 <> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <> ...

  8. Nginx访问控制_登陆权限的控制(http_auth_basic_module)

    Nginx提供HTTP的Basic Auth功能,配置了Basic Auth之后,需要输入正确的用户名和密码之后才能正确的访问网站. 我们使用htpasswd来生成密码信息,首先要安装httpd-to ...

  9. saltstack1

    saltstack三种运行模式: local本地.master/minion(类似于agent).salt ssh saltstack三大功能: 远程执行.配置管理.云管理 saltstack安装:1 ...

  10. Jclemo_ CTF_WEEK1~2学习总结

    Jclemo_ CTF_WEEK1~2学习总结 纯属因为感觉有趣,加入了ForDKYCTF小组学习,心得体会就不说了,总结一下最近的学习知识点(不全,参考我自己的940133658@qq.com的印象 ...