vue3 通信最好的方式
时间: 2023-07-25 19:28:24 浏览: 40
在 Vue 3 中,可以使用 `provide` 和 `inject` API 进行组件间通信,这是一种更加灵活的方式。
`provide` API 可以在父组件中提供一个值,`inject` API 可以在子组件中注入该值。这种方式可以让你在父组件中定义一些数据或方法,而后续所有子孙组件都可以访问到这些数据或方法。
以下是一个示例代码:
父组件中:
```javascript
import { provide } from 'vue';
import Child from './Child.vue';
export default {
setup() {
const data = '这是父组件提供的数据';
provide('data', data); // 提供数据
return {
// ...
};
},
components: {
Child
}
};
```
子组件中:
```javascript
import { inject } from 'vue';
export default {
setup() {
const data = inject('data'); // 注入数据
return {
data
};
}
};
```
这样,子组件就可以通过注入的方式访问到父组件提供的数据了。
需要注意的是,`provide` 和 `inject` API 可以传递任何类型的值,包括对象、数组和函数等,但是这种方式可能会让你的代码更加难以维护,因此建议在使用时需要有一定的规范和约束。