import * as React from "react"; import {Platform, StatusBar} from "react-native"; import app from "../../app"; import {IProps} from "./render"; import loading from "../../loading"; import {useNav} from "../../nav"; const useData = (props: IProps) => { const nav = useNav(); React.useLayoutEffect(() => { // 设置安卓 状态条 if (Platform.OS === 'android') { StatusBar.setBackgroundColor('rgba(0,0,0,0)'); StatusBar.setTranslucent(true); } // 获取默认 statusBar const defaultStatusBar = app.header.getDefaultBar(); // 如果有设置,则设置 statusBar if (props.barStyle) app.header.setBar(props.barStyle); else StatusBar.setBarStyle(defaultStatusBar); // 获取变化 const emitterData = app.emitter.get(app.appHeaderBar, () => { StatusBar.setBarStyle(app.header.getDefaultBar()) }) return () => { // 移除 emitter emitterData.remove(); // 判断当前 statusBar 是否和默认相同,如不同,则替换回默认 const statusBar = app.header.getDefaultBar(); if (statusBar !== defaultStatusBar) app.header.setBar(defaultStatusBar); // 判断 loading是否存在,如存在则取消 if (loading.has()) loading.hide(); } }, []); } export default { useData }