uni-app
uni-app copied to clipboard
vue3 小程序自定义组件, props 编译后丢失
// vue2 中源码
<rich-now-ad tag="100" :detail="richNowData" @close="oncloseRichNowAd" />
// vue2 中编译的结果
<rich-now-ad vue-id="5dd2eb54-11" tag="100" detail="{{richNowData}}" data-event-opts="{{[['^close',[['oncloseRichNowAd']]]]}}" data-com-type="wx" ref="__r" data-event-list="onClose" onClose="__e" class="data-v-7a5bdf46" onVueInit="__l"></rich-now-ad>
// vue3 中源码
<view>
{{ richNowData }}
<rich-now-ad tag="101" :detail="richNowData" @close="oncloseRichNowAd" />
</view>
// vue3 中编译的结果
<view>{{a}} <rich-now-ad onClose="{{b}}" u-t="m" u-i="015f2418-0" onVI="__l" u-p="{{c}}"/></view>
可以看到 vue3 中,自定义的属性全部丢了,导致我无法向组件内传递数据
看一下你的rich-now-ad组件是如何写的
看一下你的rich-now-ad组件是如何写的
const modalPlugin = requirePlugin('richNowPlugin')
Component({
props: {
detail: {},
onClose: (data) => console.log(data),
},
data: {
interstitialAd: {},
},
onInit() {
this.setData({
interstitialAd: new modalPlugin.CreateInterstitialAd(),
})
this.data.interstitialAd.onLoad(() => {
this.data.interstitialAd.show({
spaceCode: 'xxxxxxxxx',
rtaExtMap: {
organization_type: 'xxxx',
organization_sub_type: this.props.detail.organizationSubType,
device_location: this.props.detail.deviceLocation,
device_id: this.props.detail.deviceCode,
public_opinion_level: this.props.detail.publicOpinionLevel,
touch_point_location: 'index',
touch_point_type: 'full_screen',
},
})
})
this.data.interstitialAd.onClose((res) => {
this.props.onClose(res)
})
this.data.interstitialAd.onError(() => {
this.props.onClose({
type: 'err',
})
})
},
methods: {},
})
自定义组件的props被编译掉是符合预期的,props会在运行时动态传递,不会影响实际功能。 还有你的小程序自定义组件写错了吧,应该是
properties: {
detail: {},
onClose: (data) => console.log(data),
},
然后在自定义组件内, this. detail 是可以获取具体的值的
自定义组件的props被编译掉是符合预期的,props会在运行时动态传递,不会影响实际功能。 还有你的小程序自定义组件写错了吧,应该是
properties: { detail: {}, onClose: (data) => console.log(data), },然后在自定义组件内, this. detail 是可以获取具体的值的
是支付宝的自定义组件
自定义组件的props被编译掉是符合预期的,props会在运行时动态传递,不会影响实际功能。 还有你的小程序自定义组件写错了吧,应该是
properties: { detail: {}, onClose: (data) => console.log(data), },然后在自定义组件内, this. detail 是可以获取具体的值的
没理解你说的符合预期的是什么意思。最终的表现就是在 vue3 中,我无法把 props 数据从外面传进来,vue2 是正常的
符合预期的意思是 props会正常工作,不影响使用。如果子组件无法使用props,提议提供一下可复现的demo,我这边排查一下
长时间未响应,关闭本issue。 如还有问题,可 reopen issue 继续讨论。