生命周期

以下所有注册回调函数内部 this 均为当前页面。

ready()

页面准备完成时。通过 this.porps.param 可以获取 open(name, opts) 时传入的参数。

举例:从 A 页面打开 B 页面,此时 B 页面就准备完成了。

actived(param)

页面激活时。param 为来源页携带的参数。

举例:B 页面是从 A 页面打开的,现在从 B 页面返回 A 页面,此时 A 页面就被激活了。

deactived()

页面失活时。

举例:从 A 页面打开 B 页面,此时 A 页面就失活了。

destroy()

页面销毁时。

举例:B 页面是从 A 页面打开的,现在从 B 页面返回 A 页面,此时 B 页面就被销毁了。

使用方法

在继承了 QView 的页面中,对其 bindEvents 进行声明即可。

注意:通过 schemenative 代码进行打开页面时,请务必声明正确的 pageName(moduleName) 参数, 否则将导致页面无法获取到正确的事件!

class LifeCyclePage extends QView {
    // Events
    bindEvents = {
        ready() {
            tester.log('[LifeCyclePage][ready]', this.props.param);
        },
        actived(param) {
            tester.log('[LifeCyclePage][actived]', param);
        },
        deactived() {
            tester.log('[LifeCyclePage][deactived]');
        },
        destroy() {
            tester.log('[LifeCyclePage][destroy]');
        }
    };
};

API 和生命周期的关系

API 触发的生命周期回调
open 当前页面的 deactive 和下一页面的 readyactived
goto 若新建历史:当前页面的 deactive 和下一页面的 readyactived;若回到历史:当前页面的 deactivedestroy 和下一页面的 actived
back 当前页面的 deactivedestroy 和下一页面的 actived
backTo 当前页面的 deactivedestroy 和下一页面的 actived
home 当前页面的 deactivedestroy 和下一页面的 actived
close 若关闭当前页面:当前页面的 deactivedestroy 和下一页面的 actived

函数式组件调用方式

v5.4.9 以上支持 示例

const FuncComponents = (props) => {
    // 要将 props 为参数传入
    Ext.lifecycleListeners(props, {
        ready() {
            console.log('[LifeCyclePage][ready]', props);
        },
        actived(param) {
            console.log('[LifeCyclePage][actived]', param);
        },
        deactived() {
            console.log('[LifeCyclePage][deactived]');
        },
        destroy() {
            console.log('[LifeCyclePage][destroy]');
        },
    });

    return (
        <View>
            <Text>FuncComponents</Text>
        </View>
    );
};