ToB企服应用市场:ToB评测及商务社交产业平台

标题: vue3组件传值详细使用 [打印本页]

作者: 篮之新喜    时间: 2025-1-22 19:36
标题: vue3组件传值详细使用
问:
left.vue文件调用接口获取了后端返回的urlLink字段,我该怎么通报给总的父组件index.vue中,我需要点击父组件的一个按钮来触发跳转?
回答:
  1. 在 Vue 3 中使用 TypeScript 和 `setup` 语法糖时,可以通过 `emit` 和 `props` 来实现子组件向父组件传递数据。以下是一个示例,展示如何在子组件 `Left.vue` 中获取后端返回的 `urlLink` 字段,并将其传递给父组件 `Index.vue`,然后在父组件中点击按钮时触发跳转。
  2. ### 子组件 `Left.vue`
  3. <template>
  4.   <div>
  5.     <!-- 子组件的内容 -->
  6.   </div>
  7. </template>
  8. <script lang="ts" setup>
  9. import { ref, onMounted } from 'vue';
  10. const emit = defineEmits(['urlLinkUpdated']);
  11. const urlLink = ref('');
  12. const fetchUrlLink = async () => {
  13.   // 模拟后端返回的 urlLink
  14.   const mockUrlLink = 'https://www.example.com';
  15.   urlLink.value = mockUrlLink;
  16.   // 将 urlLink 发射给父组件
  17.   emit('urlLinkUpdated', urlLink.value);
  18. };
  19. onMounted(() => {
  20.   fetchUrlLink();
  21. });
  22. </script>
  23. <style scoped>
  24. /* 子组件的样式 */
  25. </style>
  26. ```
  27. ### 父组件 `Index.vue`
  28. <template>
  29.   <div>
  30.     <Left @urlLinkUpdated="handleUrlLinkUpdated" />
  31.     <button @click="navigateToUrl">Go to URL</button>
  32.   </div>
  33. </template>
  34. <script lang="ts" setup>
  35. import { ref } from 'vue';
  36. import Left from './Left.vue';
  37. const urlLink = ref('');
  38. const handleUrlLinkUpdated = (link: string) => {
  39.   urlLink.value = link;
  40. };
  41. const navigateToUrl = () => {
  42.   if (urlLink.value) {
  43.     window.location.href = urlLink.value;
  44.   } else {
  45.     alert('URL is not available.');
  46.   }
  47. };
  48. </script>
  49. <style scoped>
  50. /* 父组件的样式 */
  51. </style>
  52. ```
  53. ### 解释
  54. 1. **子组件 `Left.vue`**:
  55.    - 使用 `ref` 定义 `urlLink`。
  56.    - 使用 `defineEmits` 定义父组件需要监听的事件。
  57.    - 在 `onMounted` 生命周期钩子中调用 `fetchUrlLink` 方法,模拟从后端获取 `urlLink`。
  58.    - 使用 `emit('urlLinkUpdated', urlLink.value)` 将 `urlLink` 发射给父组件。
  59. 2. **父组件 `Index.vue`**:
  60.    - 导入并使用子组件 `Left`。
  61.    - 使用 `ref` 定义 `urlLink`。
  62.    - 监听子组件发射的 `urlLinkUpdated` 事件,并在 `handleUrlLinkUpdated` 方法中更新父组件的 `urlLink` 数据。
  63.    - 在按钮点击事件 `navigateToUrl` 中,检查 `urlLink` 是否有效,然后使用 `window.location.href` 进行跳转。
  64. 通过这种方式,你可以将子组件中获取的 `urlLink` 传递给父组件,并在父组件中通过按钮点击事件触发跳转。
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4