首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SolidJS -如何获取当前组件实例

SolidJS -如何获取当前组件实例
EN

Stack Overflow用户
提问于 2022-06-19 15:28:36
回答 1查看 504关注 0票数 2

是否有一种方法来访问实例/获取当前在SolidJS中呈现/活动的组件的引用,从而访问它的当前支持、信号、内部状态、效果等?

我正在寻找类似于React的__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner (但在生产中也是可消费的)或Svelte的运行时内部get_current_component()之类的东西。为了给出一些上下文,我之所以需要它,是因为我正在构建一个库,它提供了一个应该能够访问当前正在使用该函数的组件的支持的函数。

我试着和SolidJS getOwner()一起玩,但我不确定我是否理解。我找不到任何参考组件的当前道具或信号或效果。

是否有任何方法来实现它的坚实,或有任何‘黑客’来实现类似的东西?

Thx预先

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-19 16:20:45

由于Solid是如何工作和处理“组件”的,这些类型的东西是有限的、不可用的,或者只能在开发中使用。在生产中,固体抛出了不需要工作的东西。

问题是,与Svelte或React不同,“组件实例”本身并不存在。这只是一个信号和反应的图表。什么是组件?只是一个函数,返回一些DOM元素,通过将它们添加到图中来创建一些信号和计算,然后.它会被收集到垃圾,就这样。生产中的组件与任何其他功能(钩子)没有什么不同。

当然,这个图表在某种程度上仍然是可分析的。你可以看到所有的计算(createEffect,createMemo,等等)。以及他们目前观察到的信号。仅此而已。也许上下文也是。我们所理解的道具--一个由父对象传递给子函数的反应性对象--只是一个对象,带有一些getter传递给一个函数--它在反应性图中并不作为一个单独的实体存在。您仍然可以访问内部的信号--但只有在某些效果中使用它们时,创造性图形的某些节点才有对其的引用。

有点像这样:https://playground.solidjs.com/?hash=597826062&version=1.4.1

因此,如果您要创建一个用于生产的库--我建议您显式地为您提供想要的数据,并提供参数/道具,而不是遍历内部。

但是,如果您希望在开发过程中对反应性图进行一些可视化,您可以看到这个调试器的源代码:https://github.com/thetarnav/solid-devtools/tree/main/packages/debugger

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72678132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档