组件通信方式之Props

组件通信方式之Props–defineProps的使用

直接上代码ba

父组件代码Father.vue

<script setup>
import { ref } from "vue";
//props:可以实现父子组件通信,props数据还是只读的!!!
import Child from "./ChildM.vue";
let info = "这是父组件传过去的消息info";
let infoNum = ref(100);
function add() {
  infoNum.value++;
}
</script>
<template>
  <div class="father">
    <h1>我是父组件</h1>
    <h2>infoNum的值为:{{ infoNum }}</h2>
    <Child :info="info" :infoNum="infoNum" :add="add"></Child>
  </div>
</template>
<style>
.father {
  height: 500px;
  background: yellowgreen;
}
</style>

子组件代码Child.vue

<script setup>
import { ref } from "vue";
//需要使用到defineProps方法去接受父组件传递过来的数据
//defineProps是Vue3提供方法,不需要引入直接使用
//接收props有两种写法,数组|对象写法都可以
// let props = defineProps(["info", "infoNum", "add"]);
let props = defineProps({ info: String, infoNum: Number, add: Function });
console.log("props输出啦", props);

// function add() {
//   haha.value += 10;
// }
let info = "我是子组件定义的info";

//按钮点击的回调
const updateProps = ()=>{
  // props.infoNum +=10;  props:只读的
  console.log(props.infoNum)
}
</script>
<template>
  <div class="son">
  <h1>我是子组件</h1>
  <!--若子组件中定义了与props变量/函数名相同的变量/函数,则在访问props变量时需要加props前缀,则子组件中定义的变量/函数会覆盖父组件中传递过来的变量/函数-->
    <div>{{ props.info }}</div>
    <div>{{ info }}</div>
    <!--props可以省略前面的名字--->
    <div>父组件传递的infoNum:{{ infoNum }}</div>
    <!-- 子组件调用父组件中定义的函数,可以修改props数据 -->
    <button @click="add()">点击增加infoNum</button>
    <button @click="updateProps">修改props数据</button>
  </div>
</template>
<style>
.son {
  height: 300px;
  background: pink;
}
</style>

在这里插入图片描述

在这里插入图片描述
总结:

1.props:可以实现父子组件通信,props数据是只读的;
2.在子组件中想修改父组件数据,可通过调用父组件props传递过来的函数的方式;
3.在子组件中需要使用到defineProps方法去接受父组件传递过来的数据;
4.defineProps有数组|对象两种写法;
5.在子组件中若未定义与props数据变量/函数名相同的变量/函数,在模板使用时可以省略前缀props. ,否则需要加前缀。

如有错误,欢迎指出,我修正!谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值