[小程序]自定义组件和页面onload执行先后

[小程序]自定义组件和页面onload执行先后

Scroll Down

页面onLoad执行时机确实是在所有组件初始化完成之后再去执行,所以这样在使用过程中可能会面临一个问题, 代码如下:

解释: info标签为一个自定义组件,我们需要通过自定义属性传递值(reportId)

<header></header>
<info reportId="{{reportId}}"></info>

JS代码:data中reportId 由reload执行后得到

Page({
    data: {
        reportId: 0
    },
    onLoad: function (options) {
        console.log('options', options)
        this.setData({
            reportId: options.reportId
        })

    }
});

上面这种情形就会出现组件拿不到重新赋值的reportId。

解决办法:暂时用条件渲染(wx:if)来让组件渲染, 如 !== 0时渲染

<header></header>
<info reportId="{{reportId}}" wx:if="{{reportId !== 0}}"></info>