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>
相关推荐
FreeTinker5 小时前
HTML本地存储技术解析:localStorage与sessionStorage的原理、差异与应用场景
前端·html
qq_452396235 小时前
第十二篇:《全链路监控与可观测性:前端错误追踪与性能分析》
前端
海兰6 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(三)
javascript·python·金融
wangruofeng6 小时前
Phosphor Icons 官网源码拆解:URL 即存储、水波动画与 7362 Star 图标库的架构实践
前端·架构·github
BigTopOne6 小时前
WebRTC Native / Android 开发学习资源整理
前端
excel7 小时前
nuxt 3 升级 nuxt 4 报错之 hasInjectionContext
前端
小磊哥er7 小时前
深入解构Claude Code - 第 7 篇 · 连接外面的世界
javascript·ai编程
何以解忧,唯有..8 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
小磊哥er8 小时前
深入解构Claude Code - 第 6 篇 · 终端里的图形界面
javascript·ai编程
海兰8 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(一)
javascript·python·金融