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

四川做网站设计哪家好今日头条新闻最新事件

四川做网站设计哪家好,今日头条新闻最新事件,佛山美容网站建设,网站开发需要学多久在 Vue 3 和 TypeScript 中,父组件触发子组件事件方法主要有两种方式:使用模板引用(ref) 或 通过自定义事件(emit)。下面是两种方法的详细实现: 方法 1:使用模板引用(Ref…

在 Vue 3 和 TypeScript 中,父组件触发子组件事件方法主要有两种方式:使用模板引用(ref) 或 通过自定义事件(emit)。下面是两种方法的详细实现:


方法 1:使用模板引用(Ref)直接调用子组件方法(推荐)

子组件 ChildComponent.vue

vue

复制

下载

<template><div><p>子组件被触发次数: {{ count }}</p></div>
</template><script setup lang="ts">
import { ref } from 'vue';const count = ref(0);// 暴露给父组件的方法
const triggerChildMethod = () => {count.value++;console.log('子组件方法被触发');
};// 使用 defineExpose 暴露方法
defineExpose({triggerChildMethod
});
</script>
父组件 ParentComponent.vue

vue

复制

下载

<template><div><button @click="handleClick">父组件按钮</button><ChildComponent ref="childRef" /></div>
</template><script setup lang="ts">
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';// 定义子组件的 Ref 类型
const childRef = ref<InstanceType<typeof ChildComponent> | null>(null);const handleClick = () => {if (childRef.value) {childRef.value.triggerChildMethod(); // 直接调用子组件方法}
};
</script>

方法 2:通过自定义事件(Emit)

子组件 ChildComponent.vue

vue

复制

下载

<template><div><p>子组件被触发次数: {{ count }}</p></div>
</template><script setup lang="ts">
import { ref } from 'vue';const count = ref(0);// 定义内部方法(不暴露给父组件)
const internalMethod = () => {count.value++;console.log('子组件方法被触发');
};// 监听父组件传来的事件名(例如 "trigger-child")
defineEmits<{(e: 'trigger-child'): void;
}>();// 暴露方法(可选,如果父组件需要通过 ref 调用)
defineExpose({ internalMethod });
</script>
父组件 ParentComponent.vue

vue

复制

下载

<template><div><button @click="$refs.childRef?.internalMethod()">方式1: Ref 调用</button><button @click="emitEvent">方式2: 事件触发</button><ChildComponent ref="childRef" @trigger-child="childRef?.internalMethod()" /></div>
</template><script setup lang="ts">
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';const childRef = ref<InstanceType<typeof ChildComponent> | null>(null);const emitEvent = () => {// 通过事件触发子组件内部逻辑childRef.value?.$emit('trigger-child');
};
</script>

关键点说明:

  1. 使用 defineExpose
    子组件需显式暴露方法,父组件才能通过 ref 直接调用。

  2. TypeScript 类型安全

    ts

    复制

    下载

    const childRef = ref<InstanceType<typeof ChildComponent> | null>(null);

    确保调用子组件方法时有完整的类型提示。

  3. 两种方式选择

    • Ref 直调:适合直接操作子组件

    • 自定义事件:适合解耦场景(子组件自行响应事件)

  4. 注意事项

    • 避免过度使用 ref 破坏组件封装性

    • 事件驱动方式更符合 Vue 的数据流原则


完整工作流程:

  1. 子组件用 defineExpose 暴露方法

  2. 父组件声明 ref 并关联子组件

  3. 父组件按钮点击时通过 childRef.value.methodName() 调用

  4. 子组件方法执行并更新状态

根据你的项目结构选择合适的方式即可实现父子组件通信。

http://www.dtcms.com/wzjs/187621.html

相关文章:

  • 油气集输毕业设计代做网站爱站查询
  • 网站弹出框怎么做百度指数数据
  • 国外做多媒体展览的网站网络服务提供者收集和使用个人信息应当符合的条件有
  • 双语版网站怎么做东莞网站制作公司联系方式
  • 如何为自己的店铺做网站合肥网站seo
  • 怎么免费建立网站做推广燃灯seo
  • 合肥做网站好的公司产品经理培训哪个机构好
  • 腾讯风铃怎么做网站优化seo是什么意思
  • 怎么做网站的投票平台衡水网站seo
  • h5语言网站制作什么叫做关键词
  • 做电商网站必需知道qc怎么引流推广自己的产品
  • 郑州网站建设qicaizz网络营销的12种手段
  • wordpress列表插件sem和seo哪个工作好
  • 怎么免费创建一个网站做网上推广
  • 政府网站集约化建站怎么制作网址
  • 宁波南部商务区网站建设线下推广方式都有哪些
  • 网站建设这块是怎么挣钱的短视频推广平台有哪些
  • 网站icp备案号怎么查seo零基础培训
  • 制作网站软件不懂代码可以制作吗西安网站定制开发
  • 中铁三局招聘信息2023seo快速整站上排名教程
  • 网站正能量下载免费软件网络营销的有哪些特点
  • 报纸做网站宣传费用seo对网络推广的作用是什么?
  • 互联网怎么学优化大师使用心得
  • 做外贸有什么免费网站seo关键词怎么选
  • 建设网站的费用怎么做账sem是什么设备
  • 邯郸哪儿做网站好酒店推广渠道有哪些
  • 专业网站建设最便宜石家庄百度推广排名优化
  • 做企业网站服务器在国外文案代写平台
  • 广州站电话自媒体代运营
  • 保定网站制作价格淘宝店铺怎么推广