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>
相关推荐
用户841794814562 小时前
vxe-table 实现编辑列的权限控制:列级与表级权限管理
vue.js
用户847181054192 小时前
DeepAgents.js 教程 06—— 跨会话长期记忆(Memory与AGENTS.md)
javascript·agent
阿黎梨梨2 小时前
React 表单处理与性能优化:从入门到进阶
前端·react.js
Whbbit19992 小时前
发布自己的 shadcn-vue 扩展组件,并支持 CLI 安装
前端·开源
breeze jiang2 小时前
React memo、useCallback 与 useMemo:父组件多状态时如何减少无效渲染
前端·javascript·react.js
朱涛的自习室3 小时前
从 Prompt 到 Graph:AI 工程的进化史
android·前端·人工智能
敲代码的玉米C4 小时前
让两个模型一写一审
前端·人工智能·架构
代码不加糖4 小时前
common.js和es6中模块引l入的区别?
前端·javascript·es6
qq83443104 小时前
一款纯前端的excel控件,XuY_Sheet 电子表格组件教程
前端·excel·教程·luckysheet·xuy_sheet控件·前端表格控件