[Vue]跨组件传值

发布于:2025-05-22 ⋅ 阅读:(23) ⋅ 点赞:(0)

父子组件传值

        详情可以看文章

跨组件传值

        Vue 的核⼼是单向数据流。所以在父子组件间传值的时候,数据通常是通过属性从⽗组件向⼦组件,⽽⼦组件通过事件将数据传递回⽗组件。多层嵌套场景⼀般使⽤链式传递的⽅式实现provide+inject的⽅式适⽤于需要跨层级共享数据的场景,但需要注意不要滥⽤。如果组件层级较深,且需要在多个组件之间共享状态,可以使⽤ Vuex 或 Pinia 等状态管理⼯具。

        多层嵌套传值:

        现在有三个组件,也就是爷爷、爸爸、儿子三个组件。

1.在父组件中使用provide,传递需要传递的数据。格式:provide('该数据的唯一标识名',数据)

2.在子组件中使用inject,接收传递来的数据。格式:const obj = inject('该数据的唯一标识名')

<!--App.vue-->
<script setup>
import {provide, ref} from "vue";

import mymiddle from './middle.vue'

  const myobj = ref({
    name: "John",
    email: "john@gmail.com"
  })

provide("objId", myobj)

</script>
<template>
  <p>我是爷爷组件</p>
  <mymiddle></mymiddle>
</template>

<style scoped>
</style>

<!--middle.vue-->
<script setup>
import foot from './foot.vue'
</script>

<template>
  <p>我是爸爸组件</p>
  <foot></foot>
</template>

<!--foot.vue-->
<script setup>
import {inject, ref} from "vue";

const getobj = inject("objId")

</script>

<template>
  <p>我是儿子组件</p>
  <p>接收的数据:{{getobj}}</p>
</template>

        注意,这个模式只能用在多层嵌套中,由祖辈往下传,不能下往上传。同样的,同级之间也不能直接传。

跨组件传函数

        传递操作与传递值一样。有一点需要注意:函数传递给后辈组件之后,在后辈组件中触发,执行的对象不会变。例如该函数是给原组件中的num的值+1,那么传递给后辈组件并在其中触发,修改的还是原组件中的num的值。


网站公告

今日签到

点亮在社区的每一天
去签到