(二)@vue/composition-api 之 provide/inject

父组件:

<template>
  <div>
    father: {{ name }}
    <Child />
  </div>
</template>

<script>
import { defineComponent, ref, provide } from '@vue/composition-api'
import Child from './child.vue'
export default defineComponent({
  components: {
    Child
  },
  setup () {
    let name = ref('zfb')
    // 传递变量
    provide('name', name)

    setTimeout(() => {
      // 子组件会变成 lyf
      name.value = 'lyf'
    }, 2000)

    // 传递方法
    const changeName = () => {
      name.value = 'lyf happy'
    }

    provide('changeName', changeName)

    // 传递函数+参数
    const changeNameProps = val => {
      name.value = val
    }

    provide('changeNameProps', changeNameProps)

    return {
      name
    }
  },
})
</script>

<style scoped>

</style>

子组件:

<template>
  <div>
    child: {{ name }}
    <div @click="changeName">child changeName</div>
    <div @click="changeNamePropsChild">child changeName props</div>
  </div>
</template>
<script>
import { defineComponent, inject } from '@vue/composition-api'
export default defineComponent({
  setup() {
    // 接受参数
    const name = inject('name')
    // 接受方法
    const changeName = inject('changeName')
    // 接受方法
    const changeNameProps = inject('changeNameProps')

    // 方法传参
    const changeNamePropsChild = () => {
      changeNameProps('happy forever')
    }
    return {
      name,
      changeName,
      changeNamePropsChild
    }
  },
})
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值