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

vue3组件传值具体使用

问:

left.vue文件调用接口获取了后端返回的urlLink字段,我该怎么传递给总的父组件index.vue中,我需要点击父组件的一个按钮来触发跳转?

回答:

在 Vue 3 中使用 TypeScript 和 `setup` 语法糖时,可以通过 `emit` 和 `props` 来实现子组件向父组件传递数据。以下是一个示例,展示如何在子组件 `Left.vue` 中获取后端返回的 `urlLink` 字段,并将其传递给父组件 `Index.vue`,然后在父组件中点击按钮时触发跳转。### 子组件 `Left.vue`<template><div><!-- 子组件的内容 --></div>
</template><script lang="ts" setup>
import { ref, onMounted } from 'vue';const emit = defineEmits(['urlLinkUpdated']);
const urlLink = ref('');const fetchUrlLink = async () => {// 模拟后端返回的 urlLinkconst mockUrlLink = 'https://www.example.com';urlLink.value = mockUrlLink;// 将 urlLink 发射给父组件emit('urlLinkUpdated', urlLink.value);
};onMounted(() => {fetchUrlLink();
});
</script><style scoped>
/* 子组件的样式 */
</style>
```### 父组件 `Index.vue`<template><div><Left @urlLinkUpdated="handleUrlLinkUpdated" /><button @click="navigateToUrl">Go to URL</button></div>
</template><script lang="ts" setup>
import { ref } from 'vue';
import Left from './Left.vue';const urlLink = ref('');const handleUrlLinkUpdated = (link: string) => {urlLink.value = link;
};const navigateToUrl = () => {if (urlLink.value) {window.location.href = urlLink.value;} else {alert('URL is not available.');}
};
</script><style scoped>
/* 父组件的样式 */
</style>
```### 解释1. **子组件 `Left.vue`**:- 使用 `ref` 定义 `urlLink`。- 使用 `defineEmits` 定义父组件需要监听的事件。- 在 `onMounted` 生命周期钩子中调用 `fetchUrlLink` 方法,模拟从后端获取 `urlLink`。- 使用 `emit('urlLinkUpdated', urlLink.value)` 将 `urlLink` 发射给父组件。2. **父组件 `Index.vue`**:- 导入并使用子组件 `Left`。- 使用 `ref` 定义 `urlLink`。- 监听子组件发射的 `urlLinkUpdated` 事件,并在 `handleUrlLinkUpdated` 方法中更新父组件的 `urlLink` 数据。- 在按钮点击事件 `navigateToUrl` 中,检查 `urlLink` 是否有效,然后使用 `window.location.href` 进行跳转。通过这种方式,你可以将子组件中获取的 `urlLink` 传递给父组件,并在父组件中通过按钮点击事件触发跳转。

http://www.lryc.cn/news/525167.html

相关文章:

  • Web 音视频(二)在浏览器中解析视频
  • 江天科技主要产品销售单价下滑,应收账款、存货周转率大幅下降
  • 我国的金融组织体系,还有各大金融机构的分类,金融行业的组织
  • vue md5加密
  • 学习ASP.NET Core的身份认证(基于JwtBearer的身份认证7)
  • Ubuntu16.04 安装OpenCV4.5.4 避坑
  • DDD - 整洁架构_解决技术设计困局
  • Python自动化运维:一键掌控服务器的高效之道
  • 数论问题61一一各种进位制
  • Java开发提速秘籍:巧用Apache Commons Lang工具库
  • 使用sql查询excel内容
  • [Python学习日记-78] 基于 TCP 的 socket 开发项目 —— 模拟 SSH 远程执行命令
  • 电子应用设计方案101:智能家庭AI喝水杯系统设计
  • vue学习路线
  • (15)Chainlink Automation(定时任务) 详细介绍及用法
  • 从入门到精通:RabbitMQ的深度探索与实战应用
  • 基于微信小程序高校订餐系统的设计与开发ssm+论文源码调试讲解
  • 【vitePress】基于github快速添加评论功能(giscus)
  • PID 控制算法(二):C 语言实现与应用
  • Git本地搭建
  • ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果
  • leetcode 2239. 找到最接近 0 的数字
  • Rust实现内网穿透工具:从原理到实现
  • 【深度学习】1.深度学习解决问题与应用领域
  • 文档解析:PDF里的复杂表格、少线表格如何还原?
  • 深圳大学-计算机系统(3)-实验三取指和指令译码设计
  • Java Swing 编程全面解析:从 AWT 到 Swing 的进化之路
  • mysql数据库启动出现Plugin ‘FEEDBACK‘ is disabled.问题解决记录
  • 2025年大模型对智能硬件发展的助力与创新创意
  • Tensor 基本操作1 unsqueeze, squeeze, softmax | PyTorch 深度学习实战