使用React-DnD时:我怎样才能尝试访问包装子组件的状态?

时间:2015-09-21 17:52:16

标签: javascript reactjs react-dnd

我正在使用TreeView组件,我发现自己编写了大量代码来解决使用React-DnD引起的一个相当简单的问题。

一个例子:当使用向上和向下箭头键导航树视图时,应该选择的节点并不总是同一级别的后继者或前任者。例如,当向上移动并且同一级别的前任是开放的并且有孩子时,可用性决定(至少对我来说)应该选择前任的最后一个孩子(或实际上,最后一个可见的后代),因为是在视觉上以前选择的节点的前任。

当尝试确定前任的后代(让他们称之为"目标"节点)是打开还是关闭时,会出现问题。该信息正在目标节点的状态中维护。

问题出在哪里:我创建的用于表示节点的组件由React-DnD DragSource包装。但是,虽然React-DnD的包装机制提供了对包装组件的属性的透明访问,但其状态的情况并非如此:DragSource公开了自己的状态,但不允许访问它包装的组件的状态。

结合包装器拦截包装组件的回调ref以便传递自己的实例而不是包装组件的事实,这意味着我根本无法访问节点的打开/关闭状态,即使我确切知道他们的位置。 (实际上,在我开始使用React-DnD之前,我确实完成了这项工作。)

我该如何处理这种情况?这可能是React-DnD的错误或疏忽,还是有办法访问我不知道的包装组件?

注意:似乎有一种方法可以访问包装的组件,但是文档声明这是用于测试的。

0 个答案:

没有答案