前言

我们都知道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. JVM简单入门

    目录 初识JVM 双亲委派机制 沙箱安全机制 Native PC计数器 方法区 栈 堆 工具分析OOM GC算法 GC算法总结 JMM 初识JVM JVM的位置:jre中包含jvm. 双亲委派机制 双 ...

  2. window下开启关闭mysql服务

    cmd:管理员模式 net start mysql net stop mysql

  3. 面试BAT问的最多的27道MyBatis 面试题(含答案和思维导图总结)

    前言 关于MyBatis总结了一个思维导图希望对大家有帮助 什么是 Mybatis? Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身, ...

  4. 在线思维导图Ayoa共享功能使用教程

    Ayoa是一个制作思维导图的软件,除了导图制作,小编在使用过程中还发现了一些令人惊喜的功能,这些功能使得Ayoa有了更大的亮点以吸引用户. 下面就为大家简单介绍几个小编认为Ayoa中较为实用的共享功能 ...

  5. zabbix 监控域名证书到期时间!!!!

    在客户端机器上创建脚本 vim /etc/zabbix/zabbix_agentd.d/check-cert-expire.sh #!/bin/sh host=$1port=$2end_date=`o ...

  6. DIV设置滚动条在最底端

    网站聊天样式,无论添加什么内容div的滚动条都显示在最底端 将div添加滚动条,给div一定的高度 <div id='up' style='height:100px; width:400px;o ...

  7. P2887 [USACO07NOV]Sunscreen G

    将奶牛按照能忍受的阳光强度最大值从小到大排序.对于当前这头奶牛,选取它能抹的最小防晒霜.因为越大的防晒霜后面的奶牛越可能利用,并且抹显然不劣于不抹. 时间复杂度 \(O\left(C\log C+L\ ...

  8. Java基础教程——File类、Paths类、Files类

    File类 File类在java.io包中.io代表input和output,输入和输出. 代表与平台无关的文件和目录. 可以新建.删除.重命名,但不能访问文件内容. File类里的常量: impor ...

  9. CARDS主题 & 导航栏样式修改

    每个人对于主题样式的感觉是不一样的,譬如字体大小,间距,高宽,距离,颜色等,我们可以一定程度内很直观地去修改主题的某些样式. 首先,在浏览器中利用开发者工具进行调试,找到我们所要改动的那部分结构,写入 ...

  10. VUE中,@click后边( ) 有无括号的区别

    在使用的时候,两种方式结果效果差不多是一样. @click="Login()" @click="Login"而唯一的区别就是,有括号的可以在括号里写传递的参数. ...