provide和inject的用法

1、provide与inject的功能

通过provide与inject,可以把一个祖先组件指定的数据和方法,传递给其所有子孙组件中

provide 和 inject 主要在开发高阶插件/组件库时使用.
由于vue有$parent属性可以让子组件访问父组件。但孙组件想要访问祖先组件就比较困难。通过provide/inject可以轻松实现跨级访问父组件的数据,provide和inject是成对出现的.
##2.为什么不使用父子组件props传值呢?
因为父子组件props传值需要需要知道往哪一个子组件传值,而el-form组件中会注入的子组件是不确定的。provide只需要将传递的值抛出,不需要知道使用哪一个子组件,子组件通过inject注入获取数据,也不需要知道父组件是谁,因此在封装组件库的时候很便利。而且props只能在父子组件中传值,涉及到孙组件就不可以使用了.
##3.provider/inject用法
provider/inject:简单的来说就是在父组件中通过provider来提供变量,然后在子组件中通过inject来注入变量
  需要注意的是这里不论子组件有多深,只要调用了inject那么就可以注入provider中的数据。而不是局限于只能从当前父组件的prop属性来获取数据。
  provide:是一个对象,或者是一个返回对象的函数。里面呢就包含要给子孙后代的东西,也就是属性和属性值。
  inject:一个字符串数组,或者是一个对象。属性值可以是一个对象,包含from和default默认值,from是在可用的注入内容中搜索用的 key (字符串或 Symbol),意思就是祖父多层provide提供了很多数据,from属性指定取哪一个key;default指定默认值。
  父组件:

<script>
export default {
  // 父组件通过provide将自己的数据以对象形式传出去
  provide(){
    return {
      msg:'一条信息'
    }
  }
};
</script>

子孙组件:

<script>
export default {
  // inject:["msg"], // 使用一个注入的值作为数据入口
  inject:{ //或者写成对象
    // 使用一个默认值使其变成可选项
    msg: { // 键名
      from: 'msg', // 来源
      default: '' // 默认值
    }
  }
}
</script>

小结:

这样我们就可以通过admin模板来做我们的项目了, js高程第四版链接: https://pan.baidu.com/s/18P8ky1YalApRb-HDRENZBQ 可以加公众号获取提取码.

若有不懂的地方,请加q群147936127交流或者vx: ltby52119,谢谢~
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在依赖注入(Dependency Injection)中,provideinject 是两个重要的概念。 provide 是指提供依赖项的过程,即将依赖项提供给需要它的组件。在 Angular 中,provide 通常是通过 @Injectable 装饰器来实现的。@Injectable 装饰器用于标记一个类,表示该类可以被注入到其他组件中。在 @Injectable 装饰器中,可以使用 providedIn 属性来指定该服务应该由哪个模块或根注入器提供。 inject 是指将依赖项注入到组件中的过程。在 Angular 中,可以使用构造函数注入、属性注入或方法注入来实现依赖注入。构造函数注入是最常用的方式,它通过在组件的构造函数中声明依赖项来实现注入。在构造函数中声明依赖项时,需要使用 @Inject 装饰器来指定依赖项的类型。 下面是一个简单的示例: ``` @Injectable({ providedIn: 'root' }) export class UserService { getUsers() { return ['Alice', 'Bob', 'Charlie']; } } @Component({ selector: 'app-user-list', template: ` <h2>Users:</h2> <ul> <li *ngFor="let user of users">{{ user }}</li> </ul> ` }) export class UserListComponent { users: string[]; constructor(private userService: UserService) { this.users = userService.getUsers(); } } ``` 在上面的示例中,UserService 是一个提供用户数据的服务,它使用 @Injectable 装饰器进行标记,并使用 providedIn 属性指定该服务应该由根注入器提供。UserListComponent 是一个显示用户列表的组件,它使用构造函数注入来获取 UserService 的实例,并在构造函数中调用 getUsers 方法来获取用户数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_52148270

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值