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>
相关推荐
IT_Octopus8 小时前
【零基础入门 LLM 开发 · Day 11】:ChatOpenAI vs init_chat_model——一行换供应商
java·前端·javascript
deli0078 小时前
撒下 200 个种子点,平面为什么自己长成蜂窝?Voronoi 图实验室
前端
King禅8 小时前
JavaScript 调试实战指南:从 console.log 到 DevTools 深度运用
javascript
大文说跨境8 小时前
多账号环境隔离方案技术选型:指纹浏览器、VPS 与云手机的三种架构对比
java·开发语言·前端
咕白m6258 小时前
使用 C# 将 TIFF 转换为 PDF
前端·c#
全栈项目管理程序猿9 小时前
ArcGIS JS 基础教程(28):图层渲染顺序管理
前端·javascript
huakoh9 小时前
MCP 工具报错走哪条通道:三条探针的最小复现检查
前端
用户033307413959 小时前
ParadeDB 的 pg_search 0.26 把十词 BM25 搜索从 129ms 降到 29ms
前端
不爱说话郭德纲9 小时前
从“点点点”到一键出包:我把 uni-app x Android 离线打包做成了脚本
android·前端·uni-app
扶风ff9 小时前
练题簿在线免费刷题:创建个人任务,把刷题、听题和模考目标放到每天的学习中
开发语言·javascript·学习·小程序