Vue3 的传值方式

在 Vue3 中,常见的传值方式有以下几种:

1. props

使用 props 可以将数据从父组件传递到子组件。在父组件中使用子组件时,可以通过属性的方式将数据绑定到子组件上。

<template>
  <child-component :message='parentMessage'></child-component>
</template>

<script>
import ChildComponent from './ChildComponent.vue'

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      parentMessage: 'Hello from parent component'
    }
  }
}
</script>

在子组件中,可以通过 props 选项来接收父组件传递过来的数据。

<template>
  <div>{{ message }}</div>
</template>

<script>
export default {
  props: {
    message: {
      type: String,
      required: true
    }
  }
}
</script>

2. provide / inject

在 Vue3 中,可以使用 provide 和 inject 方法来进行跨级组件的数据传递。provide 可以在父组件中提供数据,而 inject 可以在子组件中注入数据。

<!-- ParentComponent.vue -->
<template>
  <div>
    <child-component></child-component>
  </div>
</template>

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

export default {
  components: {
    ChildComponent
  },
  setup() {
    const message = 'Hello from parent component'

    provide('message', message)
  }
}
</script>
<!-- ChildComponent.vue -->
<template>
  <div>{{ message }}</div>
</template>

<script>
import { inject } from 'vue'

export default {
  setup() {
    const message = inject('message')

    return {
      message
    }
  }
}
</script>

3. $attrs / $listeners

在 Vue3 中,可以使用 $attrs 和 $listeners 来进行组件之间的传递。$attrs 可以将父组件中没有被 props 所定义的属性传递给子组件,而 $listeners 可以将父组件中的事件传递给子组件。

<!-- ParentComponent.vue -->
<template>
  <child-component message='Hello from parent component' @click='handleClick'></child-component>
</template>

<script>
import ChildComponent from './ChildComponent.vue'

export default {
  components: {
    ChildComponent
  },
  methods: {
    handleClick() {
      console.log('Clicked from parent component')
    }
  }
}
</script>
<!-- ChildComponent.vue -->
<template>
  <div v-bind='$attrs' v-on='$listeners'>{{ message }}</div>
</template>

<script>
export default {
  props: {
    message: {
      type: String,
      required: true
    }
  }
}
</script>

以上是 Vue3 中常见的传值方式,可以根据具体情况选择合适的方式进行数据传递。

Vue3 传值方式:props、provide/inject、$attrs/$listeners

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

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