vue中父子组件传值(通俗易懂)

1.父子组件传值

首先我要说的是父组件如何向子组件传值
传的值分为静态值和动态值

1.传静态值

        //这是父组件
        <city-header title="123"></city-header>//把title传给子组件     
  //这是子组件
    export default {
      props:"title",//在子组件接收父组件传来的值用prop来接收
    }

2.传动态值

        //这是父组件
        //用v-bind绑定可传动态的值
        <city-header :weekendList="weekendList"></city-header>//把title传给子组件     
    export default {
        data (){
          return{
            weekendList:[]//数组里面的内容是从后端接口获取的动态值
          }
      },
   }
  //这是子组件
    export default {
      props:{
            weekendList:Array
             default: [0,1,2,3,4]//如果为空值则使用默认的
        }//在子组件接收父组件传来的值用prop来接收
    }

当然,你传的值可以是数字、对象、数组等等,参见vue官网

以上就是单向数据流的一般表现了: 父级 prop 的更新会向下流动到子组件中,但是反过来则不行。

2、子组件向父组件传值

上面说了父组件向子组件传值用prop向下传递,那么子组件向父组件传值呢?其实子组件向父组件传值通过触发$emit方法向上传递

image.png

这是vue官方文档的一张图片,简约而不简单。大概意思就是:
父组件通过prop给子组件下发数据,子组件通过emit事件给父组件发送信息。
使用$emit(eventName,optionalPayload)触发事件。另外,父组件可以在使用子组件的地方直接用v-on来监听子组件触发的事件。
接下来给你们看个实例吧。

<!-- 父组件 -->
<template>
    <div>
      <home-header @childDemo="parentDemo"></home-header>
      <br/> 
      子组件传来的值 : {{message}}
    </div>
</template>-+



<script>
export default {
    // ...
    data: {
        message: ''
    },
    methods: {
       parentDemo(childVaule) {//childVaule是子组件传过来的值
        this.message = childVaule;
      }
    }
}
</script>
<!-- 子组件 -->
<template> 
<div>
    <input type="text" v-model="message" />
    <button @click="click">点击</button>
</div>
</template>
<script>
export default {
    data() {
        return {
          // 默认
          message: '我是来自子组件的消息'
        }
    },
    methods: {
      click() {
          //通过$emit触发childDemo事件,顺便把message传递过去
            this.$emit('childDemo', this.message);
        }
    }    
}
</script>

当点击按钮的时候使用$emit()触发事件,把message传给父组件。

这样我们就基本实现了子组件向父组件传值了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是组件? 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装...
    youins阅读 13,194评论 0 13
  • 此文基于官方文档,里面部分例子有改动,加上了一些自己的理解 什么是组件? 组件(Component)是 Vue.j...
    陆志均阅读 9,273评论 5 14
  • Vue的组件化给前端开发带来极大的便利,这种依赖数据来控制Dom的模式,区别于以前的开发控制Dom的开发理念,这也...
    Max_Law阅读 4,816评论 0 3
  • # 在本文中,笔者又提炼了以下几个重点 补偿双向数据绑定 Vue.$set 数据侦听 Vue.$watch 表单绑...
    果汁凉茶丶阅读 5,328评论 1 15
  • 在中文中比较好理解,在英文中则更难分些。 一般见到financial management之类的,基本都是讲财务;...
    极客与宽客阅读 6,179评论 0 1

友情链接更多精彩内容