Closed heweishui closed 4 days ago
欢迎提交 PR~ Taro 非常感谢您对开源事业做出的贡献!🌷🌷🌷
一般 PR 会在一到两周内进行 review,成功合入后会随下一个版本进行发布。
Review 需要耗费大量时间,所以请遵循以下规范,协助我们提高 review 效率🙏🙏🙏
为了更好地进行沟通,请加入 Taro 开发者微信群:
欢迎提交 PR~ Taro 非常感谢您对开源事业做出的贡献!🌷🌷🌷
一般 PR 会在一到两周内进行 review,成功合入后会随下一个版本进行发布。
Review 需要耗费大量时间,所以请遵循以下规范,协助我们提高 review 效率🙏🙏🙏
为了更好地进行沟通,请加入 Taro 开发者微信群:
请简单描述一下复现路径和可复现demo,方便我进行验证
说明: willshow是为了解决返回白屏问题,路由跳转的时候会把上一页设置为display hidden,返回上一页的动画执行结束才会把hidden去掉。willshow的时机是在返回动画执行之前调用,提前把hidden去掉 复现步骤: 任意一个包含多page的sample,使用H5模式编译,从A页跳转到B页后再点击返回按钮,可以观察到返回动画执行过程中A页面未显示,只有在返回动画执行完成后A页面才会显示出来。如果不明显可以把A页面的背景设置为深色,可以明显的看到白屏效果。
说明: willshow是为了解决返回白屏问题,路由跳转的时候会把上一页设置为display hidden,返回上一页的动画执行结束才会把hidden去掉。willshow的时机是在返回动画执行之前调用,提前把hidden去掉 复现步骤: 任意一个包含多page的sample,使用H5模式编译,从A页跳转到B页后再点击返回按钮,可以观察到返回动画执行过程中A页面未显示,只有在返回动画执行完成后A页面才会显示出来。如果不明显可以把A页面的背景设置为深色,可以明显的看到白屏效果。
这个问题可以通过css来实现即可。目前在路由这一块的逻辑已经足够复杂,再添加生命周期 willshow 感觉有点多余,因为他做的事情其实是和show相似的。
建议在 packages/taro-router/src/style.ts 这个文件里面,修改.taro_page_shade
相关的css为:
.taro_page_shade:has(+.taro_page_stationed),
.taro_router > .taro_page.taro_page_show.taro_page_stationed:not(.taro_page_shade):not(.taro_tabbar_page):not(:last-child):has(+.taro_page_stationed) {
display: none;
}
.taro_page_shade:has(+.taro_page_stationed), .taro_router > .taro_page.taro_page_show.taro_page_stationed:not(.taro_page_shade):not(.taro_tabbar_page):not(:last-child):has(+.taro_page_stationed) { display: none; }
我又想了一下,当页面存在tab页面的时候,页面上的dom排序和路由的history排序并不一致,因为tab页面并不会被删除,所以应该没办法使用css来解决
说明: willshow是为了解决返回白屏问题,路由跳转的时候会把上一页设置为display hidden,返回上一页的动画执行结束才会把hidden去掉。willshow的时机是在返回动画执行之前调用,提前把hidden去掉 复现步骤: 任意一个包含多page的sample,使用H5模式编译,从A页跳转到B页后再点击返回按钮,可以观察到返回动画执行过程中A页面未显示,只有在返回动画执行完成后A页面才会显示出来。如果不明显可以把A页面的背景设置为深色,可以明显的看到白屏效果。
当多个页面存在,连续多次进行返回的时候,这么改也解决不了问题,你不如提一个pr把,这个问题修改起来有点复杂
该问题已解决, 可参考pr https://github.com/NervJS/taro/pull/15659 跟周五版本
这个 PR 做了什么? (简要描述所做更改)
解决返回时上一个页面瞬间白屏的问题
这个 PR 是什么类型? (至少选择一个)
这个 PR 涉及以下平台: