• Vue 之 provide和inject的使用


    在Vue中我们可以很方便的通过父组件往子组件传递属性,Props是我们将数据传递到子组件的主要方式之一。例如,下面的代码,我们往子组件(PopularList )传递了属性 name,其值是Most Popular Posts。在PopularList中我们可以通过name访问数据。

     
    

    但是有时子组件中可以包含子组件,如果我们想将数据从父组件传递到孙子组件,最简单的方法就是使用provide/reject。这种方式的好处是:我们不需要将属性先传给子组件,再传给孙子组件。就像Parent → Child → GrandChild。我们可以简单地将它传递为Parent → Grandchild,如下图所示:

    Vue中如何使用provide和inject

    如果你使用的是composition API。可以直接使用provide 方法传递任何形式的数据。

     
    

    provide函数接收两个参数 - 值和键。上面的例子中,键是mykey,值是message。和props一样,这个是可以是对象,数字或其他任何有效类型的数据。使用ref,我们还可以将这个属性设置为响应式

     
    

    如果使用的是Options API,则可以使用以下结构在组件中提供数据。

    export default {provide: {myKey: 'message'}
    } 
    

    在 Vue 中使用注入访问父数据

    在上面的例子中,我们说明了如何在父组件中传值。我们在孙子组件中,该如何获取到这个值,我们可以使用inject来访问属性。例如,假设我们有一个如下所示的 Vue 组件:

    
     
    

    然后是一个Child.vue看起来像这样的子组件:

    
     
    

    在GrandChildElement中,我们可以访问myKey,因为我们在父级中provide了它。我们可以在 Child.vue中这样做,但我们也可以只使用inject。provide使我们能够从多个级别获取数据。要访问这些数据GrandChildElement,我们使用inject. 我们的GrandChildElement.vue文件可能看起来像这样:

     
    

    const message这里将返回文本message,因为这是我们设置myKey的provide。如果使用的是 Options API,则可以改为

    export default {inject: [ 'myKey' ],created() {// Can access this.myKey here}
    } 
    

    最后

    最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。



    有需要的小伙伴,可以点击下方卡片领取,无偿分享

  • 相关阅读:
    进程和线程
    20231023 比赛总结
    C语言”三子棋“升级版(模式选择+”模拟智能“下棋)
    .Net Core WebApi 6.0 及Swagger文档基本创建
    Python实现多子图绘制系统
    Gumbel-Softmax完全解析
    2022年江西省赣育杯网络安全大赛学生组Web&Misc Writeup
    CompletableFuture 和 Future 的选择,以及CompletableFuture的用法
    TOWE雷达光敏感应开关,让生活更智能、更安全
    竞赛 题目:基于卷积神经网络的手写字符识别 - 深度学习
  • 原文地址:https://blog.csdn.net/weixin_53312997/article/details/127122119