Vue3学习--父传子&子传父

1.父传子

//父组件
//在父组件中引入子组件
<script>
import WelcomeItem from './components/WelcomeItem.vue' 

const count = ref(100)

</script>
<template>
<div class="father">
<h2>父组件</h2>
<!-- 1.绑定属性 -->
<WelcomeItem :count="count" message="father message"></WelcomeItem>
  </div>
</template>
//子组件
<script>
//2.defineProps接收数据
const props = defineProps({
message:'String'
count:Number
})
</script>
<template>
<div class="son">
<h3>子组件</h3>
<div>
  父组件传入数据--{{ message }}
</div>
</div>

</template>

2.子传父
父组件

<script setup>
import HelloWorldVue from './components/HelloWorld.vue'
const getMessage =(msg)=>{
  console.log(msg);
}
</script>
<template>
 <div class="father">
    <h2>父组件</h2>
    <HelloWorldVue :count="count" message="father message" @get-message="getMessage"></HelloWorldVue>
  </div>
</template>

子组件

<script setup>
const emit = defineEmits(['get-message'])
const sendMessage = () =>{
  emit('get-message','this is son message')
}
</script>
<template>
<div class="son">
  <h3>子组件</h3>
  <div>
    父组件传入的数据-{{ message }}-{{ count }}
    子传父
    <button @click="sendMessage">自定义</button>
  </div>
</div>
</template>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用中的代码是Vue3中的子组件定义的示例,其中使用了Vue3的Composition API来定义子组件。在该示例中,子组件包含一个按钮,点击按钮时会通过`ctx.emit`方法将`message`的值传递给父组件。具体的代码如下所示: ```html <template> <div class="son"> <h2>子组件</h2> <button @click="getMsessage">点我传值给父组件</button> </div> </template> <script> import { defineComponent, ref } from "vue"; export default defineComponent({ setup(prop, ctx) { const message = ref("子组件的值--张三"); function getMsessage() { console.log("进来了"); ctx.emit("getMsessage", message); } return { message, getMsessage, }; }, }); </script> <style scoped> .son { width: 200px; height: 100px; border: 1px solid green; } </style> ``` 相比于Vue2的写法,在Vue3中使用Composition API的好处是可以将相关的代码逻辑放在一个函数内部,更加清晰和易于管理。在子组件中,我们通过`ref`函数创建了一个响应式的`message`变量,并定义了一个`getMsessage`方法来触发事件并将`message`的值传递给父组件。 另外,引用和引用中的代码也是Vue3中定义子组件的示例,只是写法略有不同。无论是哪种写法,都是为了实现子组件与父组件之间的数据传递和交互。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue3组件之间通信(二)——子传父属性和方法](https://blog.csdn.net/weixin_44784401/article/details/126198480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值