通常用Taro.navigateTo
可以打开一个新路由页面,他的底层原理是创建了一个同级的页面div,然后把原先的页面级div隐藏了
如何传递数据?(这里所说的页面全都指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({}) // 清空
}, [])
网友评论