为什么 React 源码中有 new.js 和 old.js ?

在 reconciler 现在的源码中,存在 old.js 和 new.js

这种情况产生的原因具体是什么?

为什么不进行合并,是因为调度器新旧实现不一致吗

image.png

看了下:https://github.com/facebook/r...

使用 new 还是 old 是通过 ReactFeatureFlags 中的 enableNewReconciler 控制的,默认是 false

怀疑新的 reconciler 还在开发阶段,没有 release、

具体新的 reconciler 的计划的信息有谁能够解答下吗

阅读 4.6k
1 个回答

react 团队在实现Suspense 和 Concurrent。这两个依赖的时间过期模型遍布reconciler,所以很难通过几个tag来标记改动,并且不影响正常迭代。
所以,他们考虑多多种方式后,最后选择拷贝一份reconciler,然后在new和old同时保持迭代。
这样的方式看起来很丑,不过为了向前兼容、并且不影响之前和之后代码的稳定性,他们还是这么干了。
这里是reconciler迭代的情况

下面是核心开发者Andrew Clark解释复制reconciler的原因。
Andrew Clark 解释复制reconciler的原因

核心开发者在twitter上面有react迭代一年和五年的回顾。里面可以了解他们迭代react和react新功能的心路历程。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题