useShow.js 482B

1234567891011121314151617181920212223
  1. import React from "react";
  2. import Taro from '@tarojs/taro';
  3. /**
  4. * 页面显示, 隐藏 hook, 可以在 component 中使用
  5. */
  6. export default (fn) => {
  7. const fnRef = React.useRef();
  8. fnRef.current = fn;
  9. const evt = React.useMemo(() => {
  10. const _evt = Taro.getCurrentInstance().router.onShow;
  11. Taro.eventCenter.on(_evt, () => fnRef.current());
  12. return _evt;
  13. }, []);
  14. React.useEffect(() => {
  15. return () => {
  16. Taro.eventCenter.off(evt);
  17. }
  18. }, []);
  19. }