umijs/hox

v1.1.0 引入 react-reconciler 后的体积徒增问题

Opened this issue · 13 comments

是否是必要的依赖呢?代价似乎太大了

https://bundlephobia.com/result?p=hox@1.1.0

image

变动由 #19 造成

个人对这个改动的理解为支持非 dom 环境,但此项改动造成了体积徒增(3.8kb -> 76.3kb)

是否可调整为自动识别运行时环境,有条件地选择使用 react-dom 或 react-reconciler

那应该是要分成两个 package 了,类似 react-routerreact-router-dom

默认的 hox 是采用 custom renderer 方案的,包体积较大,但是兼容性更强;而 hox-dom 则是仅适用于浏览器环境的,体积更小。高端玩家甚至可以自己在 webpack 配置中根据不同环境替换为不同的 package 。
两个 package 的 API 以及行为都完全一致,只是底层实现不同。

这种方案如何?@CJY0208 @brickspert

感觉把开始很简单的一个东西,搞复杂了。🐶

对用户来说无感知,又能自动识别环境尽可能减少打包大小,这种方案感觉并不存在啊

是的…似乎只能构建时判断

当然如果大多数用户都是在浏览器环境下使用的话,也可以 hox 是复用 react-dom renderer 的,hox-universal 是全平台通用的

或者 hox 主包 render 默认为 react-dom,render 做成可配置的,在文档中做说明,让用户自己替换 render,提供示例

当然如果大多数用户都是在浏览器环境下使用的话,也可以 hox 是复用 react-dom renderer 的,hox-universal 是全平台通用的

那岂不是 break change 了。

当然如果大多数用户都是在浏览器环境下使用的话,也可以 hox 是复用 react-dom renderer 的,hox-universal 是全平台通用的

那岂不是 break change 了。

是的。。

当然如果大多数用户都是在浏览器环境下使用的话,也可以 hox 是复用 react-dom renderer 的,hox-universal 是全平台通用的

这个 +1 票

当然如果大多数用户都是在浏览器环境下使用的话,也可以 hox 是复用 react-dom renderer 的,hox-universal 是全平台通用的

+1

这不仅仅是报错的问题。现在是升级过后,卡死了。
function resetCurrentFiber() {
{
ReactDebugCurrentFrame.getCurrentStack = null;
current = null;
isRendering = false;
}
}
ReactDebugCurrentFrame 为undefined,然后就是死循环。