在Vue3中,我们可以使用provideinject来实现父子组件之间的传值。下面是一个示例:

父组件:

<template>
  <div>
    <h2>父组件</h2>
    <p>子组件的消息:{{message}}</p>
    <ChildComponent :message="message" />
  </div>
</template>

<script>
import { ref, provide } from 'vue'
import ChildComponent from './ChildComponent.vue'

export default {
  components: { ChildComponent },
  setup() {
    const message = ref('Hello from parent')
    provide('message', message)
    return { message }
  }
}
</script>

子组件:

<template>
  <div>
    <h3>子组件</h3>
    <p>父组件的消息:{{parentMessage}}</p>
    <button @click="updateMessage">改变消息</button>
  </div>
</template>

<script>
import { inject, ref } from 'vue'

export default {
  props: ['message'],
  setup(props) {
    const parentMessage = inject('message')
    const childMessage = ref(props.message)
    const updateMessage = () => {
      childMessage.value = 'New message from child'
    }
    return { parentMessage, childMessage, updateMessage }
  }
}
</script>

在父组件中,我们使用provide来提供message,然后在子组件中使用inject来获取message,并将其作为parentMessage返回。在子组件中,我们也可以使用props来获取父组件传递的消息,并将其作为childMessage返回。此外,我们还定义了一个updateMessage方法来改变子组件的消息。最后,我们在子组件中使用parentMessagechildMessage来展示父组件和子组件之间的消息传递。

vue3组合式父子组件相互传值

原文地址: https://www.cveoy.top/t/topic/bp8f 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录