We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【背景】 团队内计划增量应用使用 ice 3,存量应用迁 ice 3。增量应用每年大概有几十个,存量应用有上百个。团队内的基础组件和业务代码,数量众多,都是基于 React 16 甚至 15 编写。哪怕是对于增量应用,如果使用了存量基础组件,都很难保证在 18 下的稳定性。我们期望在 ice 3 中使用 16。
【方案】 把 ice 3 的 React 和 ReactDOM 给 externals 掉,再通过一些 polyfill 代码在 16 中模拟 createRoot 等 API。这样做不影响 ice 3 基于 18 发展的策略,又能把 React 降到 16,让业务无成本迁移。
【进展】 我已跑通了 @ice/antd-pro-scaffold 该模板,但遇到了导航切换的问题。
【错误定位】 @ice/runtime 中更新 AppContext 时,依赖了 18 的 Promise 自动批处理功能。导致在 16 下,@ice/plugin-store 中的 StoreProviderWrapper 第一次更新时获取不到新的 routeModules。
【解决方案】 更换 @ice/runtime 中 setRouteState 和 setHistoryState 的顺序即可。该方案无需植入特别的 React 16 兼容逻辑,在 18 下setRouteState、 setHistoryState 的先后不影响执行结果,无副作用。
The text was updated successfully, but these errors were encountered:
PR welcome. @AlbertXiao1994
Sorry, something went wrong.
ok
fix: fix: the error of switching route in react 16 #5739 (#5741)
0641a5d
No branches or pull requests
【背景】
团队内计划增量应用使用 ice 3,存量应用迁 ice 3。增量应用每年大概有几十个,存量应用有上百个。团队内的基础组件和业务代码,数量众多,都是基于 React 16 甚至 15 编写。哪怕是对于增量应用,如果使用了存量基础组件,都很难保证在 18 下的稳定性。我们期望在 ice 3 中使用 16。
【方案】
把 ice 3 的 React 和 ReactDOM 给 externals 掉,再通过一些 polyfill 代码在 16 中模拟 createRoot 等 API。这样做不影响 ice 3 基于 18 发展的策略,又能把 React 降到 16,让业务无成本迁移。
【进展】
我已跑通了 @ice/antd-pro-scaffold 该模板,但遇到了导航切换的问题。
【错误定位】
@ice/runtime 中更新 AppContext 时,依赖了 18 的 Promise 自动批处理功能。导致在 16 下,@ice/plugin-store 中的 StoreProviderWrapper 第一次更新时获取不到新的 routeModules。
【解决方案】
更换 @ice/runtime 中 setRouteState 和 setHistoryState 的顺序即可。该方案无需植入特别的 React 16 兼容逻辑,在 18 下setRouteState、 setHistoryState 的先后不影响执行结果,无副作用。
The text was updated successfully, but these errors were encountered: