前言

我们都知道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. mysql数据库安装与卸载以及Navicat安装

    关系型数据库Mysql 1.mysql官网网址:www.mysql.org 2.mysql数据库安装 傻瓜式安装下载地址 https://dev.mysql.com/downloads/install ...

  2. 安装mongodb扩展

    curl -O https://pecl.php.net/get/mongodb-1.2.3.tgz tar zxf mongodb-1.2.3.tgzcd mongodb-1.2.3 phpize ...

  3. Let's Do 本地开发智能合约

    上篇文章我们发了个币,有人抱怨在线(remix)写代码不爽,好吧,那就来看下怎么在本地开发智能合约? 一.安装开发环境 1.安装Node,Node v8.9.4或更高版本 我安装的是: 2.集成开发框 ...

  4. 【R语言入门】R语言中的变量与基本数据类型

    说明 在前一篇中,我们介绍了 R 语言和 R Studio 的安装,并简单的介绍了一个示例,接下来让我们由浅入深的学习 R 语言的相关知识. 本篇将主要介绍 R 语言的基本操作.变量和几种基本数据类型 ...

  5. Java基础教程——类和对象

    视屏讲解:https://www.bilibili.com/video/av48272174 面向过程 VS 面向对象 面向过程:强调步骤. 面向对象:强调对象. 面向对象的特点就是:隐藏具体实现的细 ...

  6. GitHub 上 1.3k Star 的 strman-java 项目有值得学习的地方吗?源码视角

    大家好,我是沉默王二. 很多初学编程的同学,经常给我吐槽,说:"二哥,你在敲代码的时候会不会有这样一种感觉,写着写着看不下去了,觉得自己写出来的代码就好像屎一样?" 这里我必须得说 ...

  7. JDBC【3】-- SPI技术使用以及在数据库连接中的使用

    目录 1.SPI是什么? 2.如何使用SPI来提供自定义服务? 2.1 DBInterface定义接口 2.2 模拟Mysql实现驱动 2.3 模拟SqlServer实现驱动 2.4 模拟用户使用不同 ...

  8. 【鸿蒙开发板试用报告】用OLED板实现FlappyBird小游戏(中)

    小伙伴们久等了,在上一篇<[开发板试用报告]用OLED板实现FlappyBird小游戏(上)>中,我们本着拿来主义的原则,成功的让小鸟在OLED屏幕上自由飞翔起来,下面我们将加入按钮交互功 ...

  9. 虚拟机VM15 Ubuntu18.04写第一个c程序并实现ssh连接

    输入"su",再输入密码进入根用户 1.开启ssh服务 /etc/init.d/ssh start 若没有安装会出现: (1).安装ssh apt-get install open ...

  10. docker centos容器无法yum

      问题 dockerfile yum -y install vim的时候一直未响应 但是在本地虚拟机centos7上运行则没问题   https://blog.csdn.net/jimiao_xxx ...