需求
在 pageA 跳转到 pageB 后,用户在 pageB 中一顿操作,navigateBack 回来后我们需要发起请求验证操作状态。
实现
那么我们如何知道用户返回了 pageA 呢,直接使用 useShow 会有一些问题,因为这个 api 在其他情况下也会触发(比如用户进入 app)。
所以我们需要增加一些判断,在用户跳转到 pageB 后,pageA 显示了,那就说明 pageB 销毁了。
以下代码是完整的实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import { useRef } from 'react' import { nextTick, useHide, useShow } from 'remax/wechat'
export function useShowFromBack(callback: () => void) { const pageIdx = useMemo(() => getCurrentPages().length, []) const navigated = useRef(false)
useHide(() => { nextTick(() => { if (getCurrentPages().length > pageIdx) { navigated.current = true } }) })
useShow(() => { if (!navigated.current) return navigated.current = false callback() }) }
|