VUE3 + TS + 父子组件传值

VUE3 + TS + 父子组件传值

父组件:
传入几个变量,并且有接受子组件函数@changeaddress

                  <mapSelect
                    :latitude="latitude"
                    :longitude="longitude"
                    :isGetAddress="isGetAddress"
                    :isChangeAddress="isChangeAddress"
                    @changeaddress="getAddressInfoHandler"
                  />

这里为接受函数,子组件的返回值作为参数,之后赋值当前父组件某个变量。

// 获得子组件多个参数
let getAddressInfoHandler = (mapPosition) => {
  queryForm.currentLocation.latitude = mapPosition.lat;
  queryForm.currentLocation.longitude = mapPosition.lng;
}

子组件:
这里使用defineProps获取当前父组件回传值。如果需要实时检测父组件传回来值是否改变,我们需要下面的watch

// 父组件回传值
let fatherInfo = defineProps({
    latitude: {
        type: Number, //数据类型
        required: true, //是否必填
        default: 0, //默认值
    },
    longitude: {
        type: Number, //数据类型
        required: true, //是否必填
        default: 0, //默认值
    },
    isGetAddress: {
        type: Boolean, //数据类型
        required: true, //是否必填
        default: false, //默认值
    },
    isChangeAddress: {
        type: Number, //数据类型
        required: true, //是否必填
        default: 0, //默认值
    },
})

在这里我们使用watch一旦父组件传回来值,我们将进行某些操作。watch有两种,一种是同时监测两个变量,一旦其中一个变量变化将执行如下操作:

watch(
  [() => fatherInfo.latitude, () => fatherInfo.longitude],
  () => {
    整活
  },
  { deep: true }
);

另一种是单独监测某个变量,一旦变化,执行操作

watch(
  () => fatherInfo.isGetAddress,
  () => {
  操作
  },
  { deep: true }
);

还记得我们父组件也接受子组件不,这里子组件需要定义函数,需要操作时,在后面写入参数即可

// 子组件回传值
const changeaddress = defineEmits(['changeaddress'])
changeaddress('changeaddress', map.value.getCenter(), address);

这里defineProps似乎不可以分开,尝试了下报错了,所以才将父组件所有传值都放在一起,后面用.获取不同值。

中间有个操作是希望父组件一旦监测某俩个活动就执行,这时,如果设置boolean传入子组件就会发现如果我需要重新归false,就要重新再传给父组件,很容易导致俩活动一个修改后未归false又重新修改,这时我写了一个number值,一旦活动变化就将其加一,这样可以在子组件监测变化同时又不会俩个只有一个能动。但是需要注意这个number会不会过大等情况。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dzkkkkkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值