vue3.0梳理之props

vue2.0的props不做赘述,3.0梳理

做个简单举例,在3.0中,props有两个更好用的名词
-父组件中

<script>
import assembly1 from './assembly1.vue'
import { reactive, provide } from 'vue'
   components: { assembly1 },
   setup () {
   const dataObj= reactive({
       list: [
         'cont1',
         'cont2',
      ]
   }
   provide('data', dataObj.list)
<script>

reactive是Vue3中提供实现响应式数据的方法,与2.0的defineProperty的区别就是3.0使用es6的Proxy来实现,说到这里,明天分析一下vue的响应式数据以及区别

provideinject 对有父子穿透传值能力
父组件有一个 provide 选项来提供数据,子组件有一个 inject 选项来开始使用这个数据,可以忽视层级

  • 子组件中(/assembly1.vue)
<script>
import assembly2 from './assembly2.vue'
export default {
  components: {
    assembly2
  }
}
</script>
  • 孙子组件 (/assembly2.vue)
<script>
import { inject } from 'vue'
export default {
  setup () {
    const list = inject('dataObj')
    const parentClick = (e) => {
      console.log('孙子组件内函数的触发执行' + dataObj.list)
    }
    return {
      list,
      parentClick
    }
  }
}
</script>

孙子组件中的使用,就证明了子组件及孙子组件的传值都可以正常接收

需要注意的是,provide 传值是不可以传实例或者计算得出属性:

错误示例:
provide: {
    todoLength: this.todos.length
},
正确示例:
provide() {
    return {
      todoLength: this.todos.length
    }
}
//provide作为返回对象的函数来处理
//这点有点像组件的data,也要做函数返回处理

明天分析梳理一下响应式数据及区别

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值