provide 和 inject 是 Vue 3.0 中一对用于祖先组件向后代组件传递数据的高级选项。

provide

provide 选项允许一个祖先组件提供数据,该数据可以被该组件的所有后代组件访问。通常,provide 选项在组件的配置对象中定义,如下所示:
const app = Vue.createApp({
  provide() {
    return {
      message: '这是来自祖先组件的消息'
    };
  },
  // 其他组件选项...
});

在这个例子中,祖先组件通过 provide 提供了一个名为 message 的数据,它的值是字符串 "这是来自祖先组件的消息"。

inject

inject 选项用于在后代组件中注入祖先组件提供的数据。在后代组件的配置对象中,通过 inject 选项声明你想要注入的属性名:
const app = Vue.createApp({
  // ...
});

app.component('child-component', {
  inject: ['message'], // 注入名为 'message' 的数据
  template: '<p>{{ message }}</p>',
  // 其他组件选项...
});

在这个例子中,child-component 组件通过 inject 选项声明了对 message 数据的注入。然后,可以在组件的模板中使用 {{ message }} 来访问该数据。

需要注意的是,inject 选项是一个数组,数组的每一项都是要注入的属性名。在模板中使用注入的属性时,Vue 会自动创建响应式绑定。

使用 provide 和 inject 可以方便地在组件之间进行数据传递,特别是在跨越多层嵌套的组件中。这种模式可以帮助你更好地组织和解耦组件。


转载请注明出处:http://www.zyzy.cn/article/detail/497/Vue 3.0