vue父子组件之间的传值 - 父向子传值

本文介绍Vue.js中如何通过props实现父组件向子组件传递数组数据,并在子组件中展示。展示了具体的代码示例及运行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 组件是可复用的 Vue 实例,且带有一个自行定义的名字:在这个例子中是 childTemplate
    此次为实现将父组件的数组tableData传入子组件并在子组件内使用展示

    对于父组件向子组件传值用简单的话来说,就是父组件使用v-bind绑定自定义属性,子组件使用props接收

文档摘取:所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外变更父级组件的状态,从而导致你的应用的数据流向难以理解。
关于prop的更多解释参考官网文档:Prop - Vue.js

父组件代码内容

<template>
  <div id="app">
    <h2>这是父组件</h2>
    <p>将父组件的数据传入子组件,引入子组件实现页面展示</p>
    <!-- 父组件向子组件传值(允许数组、对象任何类型的值)绑定一个自定义的属性 -->
    <childTemplate  :tableData="tableData" />
			   <!-- ↑ 自定义属性  ↑ 父组件数据名 -->
  </div>
</template>

<script>
// 引入子组件
import childTemplate from './views/children.vue'
export default {
  data(){
    return{
      tableData: [{
            date: '2020-06-29',
            name: '王皮皮',
            title: '在家小霸王,出门小王八'
          }, {
            date: '2020-06-29',
            name: '王皮皮',
            title: '在家小霸王,出门小王八'
          }, {
            date: '2020-06-29',
            name: '王皮皮',
            title: '在家小霸王,出门小王八'
          }, {
            date: '2020-06-29',
            name: '王皮皮',
            title: '在家小霸王,出门小王八'
          }]
    }
  },
  // 组件注册
  components:{
    childTemplate
  },
}
</script>
<style scoped>
    #app {
      width: 1000px;
      margin: 0 auto;
    }
</style>

子组件代码内容

  • 子组件通过props接受父元素传入的属性
  • 我们可以像是使用data中的值一样直接使用props中的值
<template>
  <div class="child-content">
	这是子组件的内容  <i>(灰色背景部分)</i>
    <div class="child">
      <div v-for="(item,key) in tableData" :key="key">
        <p>{{item.name}}</p>
        <p>{{item.title}}</p>
        <p>{{item.date}}</p>
      </div>
  </div>
  </div>

</template>

<script>

export default {
  props:{
    tableData:{   //tableData为父组件在对子组件绑定值时自定义的属性名
      type:Array  //传入值的数据类型
    },
  }
}
</script>
<style scoped>
  .child-content{
    width: 1000px;
    padding: 20px;
    background-color: #f1f1f1;
  }
  .child{
    width: 1000px;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  .child div{
    width: 160px;
    height: 150px;
    padding: 5px;
    font-size: 14px;
    border: 1px solid #ccc;
  }

</style>

以上代码运行示例图

在这里插入图片描述

Vue中,父组件子组件之间有多种方式: 1. Props: 父组件通过props向子组件数据。在父组件中使用子组件时,可以通过属性的形式将数据递给子组件子组件通过props选项来接收父组件递的数据。例如: ```vue // 父组件 <template> <div> <child-component :message="parentMessage"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { parentMessage: 'Hello from parent' }; } }; </script> // 子组件 <template> <div> <p>{{ message }}</p> </div> </template> <script> export default { props: ['message'] }; </script> ``` 2. $emit: 子组件通过$emit方法向父组件发送事件,并携带需要递的数据父组件监听子组件触发的事件,并在事件处理函数中获取子组件递的数据。例如: ```vue // 父组件 <template> <div> <child-component @custom-event="handleCustomEvent"></child-component> <p>Message from child: {{ childMessage }}</p> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { childMessage: '' }; }, methods: { handleCustomEvent(message) { this.childMessage = message; } } }; </script> // 子组件 <template> <div> <button @click="sendMessage">Send Message to Parent</button> </div> </template> <script> export default { methods: { sendMessage() { this.$emit('custom-event', 'Hello from child'); } } }; </script> ``` 这些是Vue父子组件之间的两种常见方式,根据具体场景选择合适的方式进行数据递。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值