zmp-react
Version:
Build full featured iOS & Android apps using ZMP & React
33 lines (29 loc) • 869 B
JavaScript
import { zmp, zmpready } from './zmp';
import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect';
import { emit } from './utils';
export var useTab = function useTab(elRef, props) {
var onTabShow = function onTabShow(el) {
if (elRef.current !== el) return;
emit(props, 'tabShow', el);
};
var onTabHide = function onTabHide(el) {
if (elRef.current !== el) return;
emit(props, 'tabHide', el);
};
var attachEvents = function attachEvents() {
if (!elRef.current) return;
zmpready(function () {
zmp.on('tabShow', onTabShow);
zmp.on('tabHide', onTabHide);
});
};
var detachEvents = function detachEvents() {
if (!zmp) return;
zmp.off('tabShow', onTabShow);
zmp.off('tabHide', onTabHide);
};
useIsomorphicLayoutEffect(function () {
attachEvents();
return detachEvents;
});
};