Vue-组件传值

前言


很多时候我们都会遇到组件之间数据传递问题.所以我们必须要了解组件之间的数据传递的方式.

目标


  • props
  • provide && inject

props


两个组件之间存在父子关系,子组件需要访问父组件的某个数据. 由于组件之间都是独立的存在,我们无法直接在子组件里面使用父组件的数据.所以我们来认识一下props

  • 父子组件数据传递原理

父组件传递数据给子组件. 子组件通过props获取父组件传递过来的数据.

父组件传递数据方式:

<child value='hello'>我是子组件</child>

传递一个value 给子组件,它的值为'hello'.

子组件接受数据的方式:

  1. 数组方式
export default {
  props:['value']
}
  1. 对象方式
export default {
  props:{
    value:{
      type: String,
      required: true
    }
  }
}

type: 类型.
required: 是否是必填项.

对象方式可以做到对父组件数据传递的限制.

以上面的对象方式为例: value 你只能传字符串, 并且必须给我传过来,不然我就报错.

  • 应用场景

子组件要获取父组件传递过来的数据.

provide && inject


我们了解了父子组件之间的数据传递,现在又有一个很大的问题.就是组件之间多层嵌套如何进行数据传递问题.

举个栗子: A组件B组件父亲,B组件C组件父亲. 它们之间发生了嵌套关系,这时候我想要在C组件里面获取A组件里面的数据.

的办法就是: 通过props方式A传给B,B传给C. 虽然这种方式确实可以解决我们的问题.但是你会发现超级麻烦.如果组件嵌套越多就越难受.

我是一个不太喜欢麻烦的人,所以我们来认识一下provideinject这对基佬.

  • provide

翻译过来它是提供的意思.

如果在某个组件里面使用 provide,其实就是给它的后代提供某些数据。
所有它的后代都可以获取到它所提供的数据.

export default {
  provide() {
    return {
      obj: this
    };
  }
};
  • inject
    如果一个组件使用了provide 传递数据,那要获取provide 提供的数据,我们就需要用到inject.
export default {
  inject: ["obj"]
};
  • 应用场景

一个组件想要提供一些数据给它的后代访问.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值