当前位置: 首页 > article >正文

setup函数子传父普通写法

父组件

<template>
  <div>
    <p>接收的数据: {{ receivedData }}</p>
    <Demo4Chiren2 @custom-event="handleGetWeb" />
  </div>
</template>

<script>
import { ref } from 'vue';
import Demo4Chiren2 from './demo4Chiren2.vue';

export default {
  components: { Demo4Chiren2 },
  setup() {
    const receivedData = ref(null);

    const handleGetWeb = (data) => {
      console.log(data); // 这里打印接收到的数据
      receivedData.value = data;
    };

    return {handleGetWeb, receivedData};
  }
}
</script>

子组件

记住一定要在setup哪里标上{emit},不然要报错,我搞了半天才晓得。很奇怪的一点,我看别人视频上,就没写{emit}就可以用,但是我为什么要

<template>
  <div>
    <button @click="sendData">发送数据</button>
  </div>
</template>

<script>
import { defineComponent } from 'vue';

export default defineComponent({
  setup(props, { emit }) {
    const sendData = () => {
      const data = { message: 'Hello from Demo4Chiren2' };
      emit('custom-event', data);
    };

    return { sendData };
  }
});
</script>

vue3中setup函数子传父普通写法,子暴露,以及自己踩过的坑

子组件:一定要return,还有它暴漏的方式还不一样。

<template>
  <div>
    <button @click="sendData">发送数据</button>
  </div>
</template>

<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup(props, { emit }) {
    const sendData = () => {
      const data = {message: 'Hello from Demo4Chiren2'};
      emit('custom-event', data);
    };

    const exposedData = ref("我是子暴露的数据");
    const sayHi = () => {
      return "我是子暴露的方法被调用返回的结果";
    };

    return {sendData, exposedData, sayHi};
  },
  expose: ['exposedData', 'sayHi']
});
</script>

父组件

<template>
  <div>
    <h1>父组件</h1>
    <Demo4Chiren2 @custom-event="handleCustomEvent" ref="demoChild" />
    <button @click="callChildMethod">调用子组件方法</button>
    <p>子组件数据: {{ childData }}</p>
  </div>
</template>

<script>
import { defineComponent, ref } from 'vue';
import Demo4Chiren2 from './Demo4Chiren2.vue'; // 请根据实际路径调整

export default defineComponent({
  components: {
    Demo4Chiren2
  },
  setup() {
    const demoChild = ref(null);
    const childData = ref('');

    const handleCustomEvent = (data) => {
      console.log('接收到子组件数据:', data);
      childData.value = data.message;
    };

    const callChildMethod = () => {
      if (demoChild.value) {
        console.log(demoChild.value.sayHi());
      }
    };

    return {
      demoChild,
      childData,
      handleCustomEvent,
      callChildMethod
    };
  }
});
</script>


http://www.kler.cn/news/309585.html

相关文章:

  • 一般在写SQL时需要注意哪些问题,可以提高查询的效率?
  • adb install失败: INSTALL_PARSE_FAILED_NO_CERTIFICATES
  • JavaScript高级——闭包应用-自定义js模块
  • 『功能项目』窗口可拖拽脚本【59】
  • 设置spring boot禁止日志输出到控制台
  • c++中的二叉搜索树
  • 前端网络层性能优化
  • 【2024华为杯研究生数学建模竞赛】比赛思路、代码、论文更新中.....
  • 使用 Vue 3 和 TypeScript 实现带打字效果的仿 AI 分析展示组件
  • 【C/C++语言系列】指针数组、数组指针、函数声明和函数指针区别
  • Git 中的refs
  • Python异常处理:自定义异常②
  • 智慧体育场馆:科技引领未来运动体验
  • 【C语言进阶】动态内存与柔性数组:C语言开发者必须知道的陷阱与技巧
  • JAVA学习笔记01-变量的初始化
  • Medieval Fantasy Town Village Environment for RPG FPS 中世纪城镇环境
  • 时序数据库 TDengine 的入门体验和操作记录
  • 某oa命令执行漏洞挖掘思路
  • 网络安全。
  • 数学建模笔记——动态规划
  • Vue3中集成高德地图并实现平移缩放功能
  • 如何搭建一个ip池用来做数据抓取用
  • MFC工控项目实例之十四模拟量信号名称从文件读写
  • uniapp上使用document方案之renderjs
  • 回收站数据怎么恢复?用这 5 种方法,准能恢复回收站数据!
  • 基于SpringBoot+定时任务实现地图上绘制车辆实时运动轨迹图
  • Pr:Adobe SRT
  • React中forwardRef()的作用?
  • python多进程程序设计 之二
  • 基于深度学习的文本引导的图像编辑