数据 传递

provide inject

  • provide 选项应该是一个对象或返回一个对象的函数。该对象包含可注入其子孙的 property。
  • inject 选项应该是一个字符串数组或一个对象
  • 父组件有一个 provide 选项来提供数据,子组件有一个 inject 选项来开始使用这个数据
<body>
  <div id="app">
    <Parent></Parent>
  </div>

</body>
<script>
  Vue.component('cp1', {
    template: `<div>我是cp1的组件 provide a:{{a}}</div>`,
    //从祖辈组件里获取provide提供的值
    inject: ['a']  //inject第一种写法数组
  })
  Vue.component('cp2', {
    // template:`<div>我是cp2的组件 provide  a:{{a}}</div>`,
    // inject:['a']
    template: `<div>我是cp2的组件 provide  c:{{c}} d:{{d}}</div>`,
    inject: {  //inject的第二种写法  对象
      newc: 'c', //newc是在cp2组件内使用的名字 'c'对应要注入的输入
      c: 'c',

      d: {  //inject的第三种写法
        from: 'd',//从哪里注入
        default: '我是默认值'  //如果没有祖辈组件里对应的值注入,就使用默认值
      }

    }

  })
  Vue.component('Parent', {
    template: `<div>
                    我是Parent组件 provide a:{{a}}
                    <cp1></cp1>
                    <cp2></cp2>
              </div>`,
    inject: ['a'],
    provide () { //provide 的第二种写法可以是一个函数返回一个对象
      return {
        c: 'hi weekend is coming',
        // d:'我是人人'
      }
    }
  })
  new Vue({
    el: '#app',
    // Parent组件里的所有组件都可以拿到provide里的值
    //provide 第一种写法可以直接是一个对象
    provide: {
      a: 1
    }
  })

</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值