前言

我们都知道vue核心之一:组件化,vue中万物皆组件,组件化我认为应该来至于模块化的设计思想,比如在模块化开发中,一个模块就是一个实现特定功能的独立的文件,有了模块我们就更方便去阅读代码,更方便使用别人的代码,同时自己的代码页更加易于维护,还有就是比如常用到的懒加载似乎也有模块化的感觉。前端组件化应该就是模块化的表现,vue中万物皆组件,页面上每个组件相互独立、可视化、可交互化,组件之间又可以相互组合,总之,组件化我的感觉就是一个页面对应一个容器,页面顶部有导航,有轮播图,侧边有侧边栏,中间有正文内容区域,底部也有独立的组件,不同的页面又根据内容需要,盛放相关的组件。要想让容器呈现不同效果,就需要组件之间相互交互通信。(父传子和子传父)

你可能不太懂什么是父组件,什么是子组件,更别说之间的通信了,因为我学习的时候就不太了解怎么区分,只是死记了下来,这里我说下我的理解,我们将一段代码封装成一个组件,而这个组件又在另一个容器中使用,那么使用这个组件的容器就叫父容器,成为了父组件,我们封装的代码就叫子组件。必须我们在使用某ui组件库的时候,我们使用的地方叫父组件,我们传递的值给了子组件,根据ui库提供的绑定方法其实就是子组件传递给我们使用的父组件。下面介绍一下常见的传值方式,都省略了组件注册的部分代码,实际开发中会将组件写在单独的文件中,只需要在容器中引入并使用。

父传子

总体来说就是父组件在引用的子组件中定义一个传值的属性,子组件通过props接收到父组件传来的值,同时子组件使用传来的值,

普通的父传子
<div id="app">
<subtag msg="hello"></subtag>
</div>
<script>
Vue.component('subtag', {
props: ['msg'],
template: '<span>{{msg}}</span>'
})
new Vue({
el: "#app"
})
</script>

上面的代码,div为父组件,使用了subtag子组件,通过msg属性把值hello传递给子组件,子组件通过props接收到传递的值,并把值渲染到自己的template中。

动态绑定props传递参数
<div id="app">
<input type="text" v-model='par'>
<child :message='par'></child>
</div>
<script>
Vue.component('child', {
props: ['message'],
template: '<span>{{ message }}</span>'
})
new Vue({
el: '#app',
data: {
par: ""
}
})
</script>

上面的代码。div使用了子组件child,inut双向绑定在par变量,然后将par变量通过message传递给子组件,子组件通过props收到message后,并将值渲染到自己的template中。

需要注意的是,prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。

父向子传递一个数组并遍历。
<div id="app">
<ol>
<todo-item v-for="item in sites" v-bind:todo="item">
</todo-item>
</ol>
</div>
<script>
Vue.component('todo-item', {
props: ['todo'],
template: '<li>{{ todo.text }}</li>'
})
new Vue({
el: '#app',
data: {
sites: [
{ text: 'Runoob' },
{ text: 'Google' },
{ text: 'Taobao' }
]
}
})
</script>

上面的代码先遍历后传值,把遍历的每一项传给子组件,出现了这样的效果。

时间太晚了。。。。下期介绍我对子传父的理解。

Vue-组件化,父组件传子组件常见传值方式的更多相关文章

  1. vue 父组件主动获取子组件的数据和方法 子组件主动获取父组件的数据和方法

    Header.vue <template> <div> <h2>我是头部组件</h2> <button @click="getParen ...

  2. Vue 父组件循环使用refs调用子组件方法出现undefined的问题

    Vue 父组件循环使用refs调用子组件方法出现undefined的问题 1. 背景 最近前端项目遇到一个问题,我在父组件中使用了两个相同的子组件child,分别设置ref为add和update.其中 ...

  3. Vue把父组件的方法传递给子组件调用(评论列表例子)

    Vue把父组件的方法传递给子组件调用(评论列表例子) 效果展示: 相关Html: <!DOCTYPE html> <html lang="en"> < ...

  4. vue.js组件之间通讯--父组件调用子组件的一些方法,子组件暴露一些方法,让父组件调用

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

  5. Vue父组件向子组件传递方法(自定义方法)并且子组件向父组件传递数据

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

  6. 怎样在 Vue 里面使用自定义事件将子组件的数据传回给父组件?

    首先, Vue 里面的组件之间的数据流动是 单向 的, 数据可以从父组件传递给子组件, 但不能从子组件传递给父组件, 因为组件和组件之间是 隔离 的. 就像两个嵌套的 黑盒子 . 能通过 props ...

  7. vue父组件异步传递prop到子组件echarts画图问题踩坑总结

    效果图: 大致思路:考虑到5张图都是折线图,所以准备用一个子组件承接echarts画图,然后父组件通过prop传递不同数据来展示不同的图 踩坑问题: 1.引入line子组件,画了5个元素,但是只显示一 ...

  8. Vue父子组件数据双向绑定,子组件可修改props

    第一种,子组件通过监听父组件数据,子组件改变数据之后通知给父组件 原文链接:https://blog.csdn.net/m0_37728716/article/details/81776929 父组件 ...

  9. vue3常见问题及解决方案(四)父组件切换行,然后子组件切换tab,子组件内的数据不刷新

    问题描述 父组件切换行,然后子组件切换tab,子组件内的数据不刷新. 例如父组件为订单,子组件为订单相关商品和相关客户,商品和客户使用tab选项卡组织. 当tab显示商品页时,切换订单,商品页内容跟着 ...

随机推荐

  1. Python面试题_初级版

    1.如何在一个函数内部修改全局变量 a=5 def fn(): a=4 fn() print(a) # 5 #在一个函数内部修改全局变量 a=5 def fn(): global a a=4 fn() ...

  2. 网页中审查元素(按F12)与查看网页源代码的区别

    问题 在验证目标系统是含有XSS漏洞,查看源代码,看不到插入的跨站脚本代码. 原理 所谓查看源代码,就是别人服务器发送到浏览器的原封不动的代码. 审查元素时,你看到那些,在源代码中找不到的代码,是在浏 ...

  3. 精尽MyBatis源码分析 - MyBatis初始化(四)之 SQL 初始化(下)

    该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...

  4. pytest和unittest中参数化如何做

    参数化应用场景,一个场景的用例会用到多条数据来进行验证,比如登录功能会用到正确的用户名.密码登录,错误的用户名.正确的密码,正确的用户名.错误的密码等等来进行测试,这时就可以用到框架中的参数化,来便捷 ...

  5. zabbix agent 编译安装

    zabbix 安装包下载地址 https://www.zabbix.com/download 解压好之后进入zabbix目录 执行编译安装 ./configure --prefix=/usr/loca ...

  6. centos8 yum 升级nginx

    原文地址:https://blog.csdn.net/lpwmm/article/details/105627476 CentOS8的Yum仓库中内置的nginx版本是1.14.1,最近漏扫提示需要升 ...

  7. z-index失效原因分析——由一个bug引发的对层叠上下文和z-index属性的深度思考

    新年刚开工就被一个bug虐得整个人都不好了,特地记录下. (一)bug描述 在一个fixed-data-table(一个React组件)制作的表格中,需要给表头的字段提示的特效,所以做了一个提示层,但 ...

  8. Springboot整合WebSocket实现网页版聊天,快来围观!

  9. 获取Win和Linux系统启动时间,类似uptime功能,用于判断是否修改过系统时间

    目录 前言 测试代码 Win测试 Linux测试 总结 前言 有时候需要判断系统是否有修改过时间,最简单的方法就是获取当前时间A,然后sleep X秒,然后获取 时间B,如果 时间B - 时间A ≠ ...

  10. Error:Execution failed for task ':app:compileDebugAidl'. > java.lang.IllegalStateException: aidl is missing from '/Users/renguodong/Library/Android/sdk/build-tools/26.0.2/aidl'

    错误信息:Error:Execution failed for task ':app:compileDebugAidl'. > java.lang.IllegalStateException: ...