Taro 中使用 useDidShow 在 H5 和小程序表现不一致怎么办?
我在 Taro 项目里用 useDidShow 做页面进入时的数据加载,但在 H5 上根本没触发,小程序却正常。查了文档说 H5 不支持这个生命周期,但又不想写两套逻辑,有没有统一的处理方式?
比如我现在这样写:
import { useDidShow } from '@tarojs/taro'
export default function MyPage() {
useDidShow(() => {
console.log('页面显示')
fetchData()
})
return <View>内容</View>
}
首先把 useDidShow 的逻辑移到 useEffect 里,并通过 Taro.getCurrentPages() 来判断页面是否显示。这样就能同时兼容 H5 和小程序环境了。
这个方案虽然比原生 useDidShow 稍微复杂一点,但胜在能在一个函数里搞定多端支持,不用分开写逻辑。说实话,Taro 的这些小坑确实挺烦人,不过想办法绕过去后还是挺有成就感的。
这样无论是在 H5 还是小程序,页面显示的时候都会调用
fetchData。