通常用Taro.navigateTo
可以打开一个新路由页面,他的底层原理是创建了一个同级的页面div,然后把原先的页面级div隐藏了(taro转h5版本)
如何传递数据?(这里所说的页面全都指taro的路由页,跟浏览器的标签页和react-router的路由页不一样)
比如A页面打开B页面,A页面想往B页面,传递大量的数据
A页面在跳转之前,先preload数据
Taro.preload({ test: '这是传递的数据' })
Taro.navigateTo({
url: `B页面url`,
})
然后B页面就可以在useEffect
里面取到(其实第一行就能获取到)
useEffect(() => {
console.log(Taro.getCurrentInstance().preloadData)
}, [])
看到github上issues上有人说useEffect的时机不对,获取不到数据,但是那是2019年时候的issue了,现在发现是可以获取到的
ps: 这个preload方法 有个不知道是不是bug,只要调用过一次,后面即便再次打开,没有preload,也能拿到preloaddata,也就是说,他这个preloaddata不会清空,所以需要在打开的页面里面手动清空
在B页面调一下Taro.preload({})
清空即可
useEffect(() => {
console.log(Taro.getCurrentInstance().preloadData)
// 对preloadData的数据进行业务操作xxx
// .....
// .....
// .....
Taro.preload({}) // 清空
}, [])
根据最新的测试,直接在第一行就能获取到了
const xxx = () => {
const preloadData = Taro.getCurrentInstance().preloadData
}