Vue3 父子组件通讯

一、父组件代码

javascript 复制代码
//app.vue
<template>
  <!-- 静态字符串传参不要加 : ;监听子组件抛出的click事件 -->
  <HelloWorld btnText="按钮文本" bbt="测试参数" @click="targetPath" />
</template>

<script setup lang="ts" name="HelloWorld">
import HelloWorld from './components/HelloWorld.vue'

function targetPath() {
  console.log('父组件收到按钮点击')
}
</script>

<style scoped>

</style>

二、子组件代码

javascript 复制代码
<template>
  <div class="nav-btn-right" @click="handleClick">
    {{ btnText }}
  </div>
</template>

<script setup lang="ts">
// ✅ 正确 defineProps 写法
const props = defineProps<{
  btnText: string
  bbt?: string // 可选参数
}>()

// 如果需要通知父组件,定义emit
const emit = defineEmits(['click'])

const handleClick = () => {
  console.log('点击了按钮,文本:', props.btnText)
  // 方式1:子组件内部完成逻辑
  // 方式2:向外派发事件交给父组件处理
  emit('click')
}
</script>

<style scoped>
.nav-btn-right {
  padding: 8px 18px;
  cursor: pointer;
  user-select: none;
  background-color: #165DFF;
  color: #fff;
  border-radius: 6px;
  transition: all 0.2s ease;
  font-size: 14px;
}
.nav-btn-right:hover {
  background-color: #0E4BDB;
}
.nav-btn-right:active {
  background-color: #0C42C2;
  transform: scale(0.97);
}
</style>
相关推荐
小码哥_常3 小时前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
蜗牛攻城狮5 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
她说可以呀6 小时前
Vue插槽
前端·javascript·vue.js
qq_448011166 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
aixingpan7 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_958352907 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
志尊宝8 小时前
AI原生前端开发(039):AI辅助的Nuxt 4全栈开发
前端·vue.js·ai-native
FRing039 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
excel9 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
外收内放9 小时前
Python基础语法练习题(73)
java·前端·python