react 将DevTools作为公共API包含进来,

kxeu7u2r  于 4个月前  发布在  React
关注(0)|答案(5)|浏览(104)

这个想法是实现一个多版本扩展,允许你将"调试器"附加到正在运行的React示例上。这个调试器协议将拦截的函数注入到特定版本的React中,该版本暴露了开发钩子。
实际上就是:https://github.com/facebook/react-devtools/tree/devtools-next/backend/integration
这并不是为了在生产环境中暴露有状态的反射API,因为它会对性能产生负面影响。

bprjcwpo

bprjcwpo1#

+1 真的很有趣。我目前正在开发一个工具,旨在成为React开发工具的扩展,所以我很想实现这个功能。

关于这个有任何进展吗?也许我可以帮忙。然而,我对React源代码并不熟悉,不知道从哪里开始研究。

cotxawn7

cotxawn72#

我对这个很感兴趣。
随着无状态组件的出现,我的库很难获取根组件的内部示例来遍历树并强制更新它。对我来说重要的部分是,多个工具应该能够连接到这个API。DevTools和我的库都应该能够独立注册,而不相互干扰。
你愿意让我根据DevTools现在使用的内容提出一个稻草人API吗?

of1yzvn4

of1yzvn43#

Yes please. The new devtools was designed with this in mind.
We would like to move the integration part into React's core and expose that API.
https://github.com/facebook/react-devtools/tree/master/backend/integration
The key to this design is that React should not need to maintain any state itself. Other than the component state. The API could force a complete rerender to get a replay of changes but the API should not require React keeping the previous render in memory.
On Oct 8, 2015, at 2:35 PM, Dan Abramov notifications@github.com wrote:
I'm very interested in this.
With the advent of stateless components there's no easy way for my library to get internal instance of the root component to traverse the tree and force update it.
The important part for me is that multiple tools should be able to hook up to this API. Both DevTools and my library should be able to register independently without interfering with each other.
Would you like me to propose a straw man API based on what DevTools uses now?

Reply to this email directly or view it on GitHub.

uklbhaso

uklbhaso4#

我不确定是否可以以不影响性能的方式实现这一点,但我认为值得提一下。能够调试生产环境的React应用程序真的很好。Angular通过将window.name设置为某个值并刷新浏览器来实现这一点。Angular然后根据这个值添加必要的调试信息。如果有一种方法可以在不影响性能的情况下实现类似的功能,而不影响"非调试"模式,那就太好了。这是我的两分钱建议。

bogh5gae

bogh5gae5#

这是否仍在讨论中?进展如何?我对React代码库并不熟悉,但我很想贡献并正在寻找一个我能理解的地方开始。

相关问题