我有React
组件的经典父级>子级>孙级层次结构。当我单击父级中的链接时,我想将焦点设置为孙子组件中的文本框。
我的第一次尝试是将callback
函数传递给父母的props
,然后是孩子,然后是孙子。孙子然后调用回调,将其ref
属性传递给回调。然后由父组件存储该引用,以便在父组件中单击链接时,它可以使用引用的孙组件的getDOMNode
,并只需调用focus()
来设置其焦点。这种配置有效。
但我不满意必须通过子组件中的prop
传递回调。子组件不需要prop
,只是将它传递给孙子。 AFAIK这是一个经典的React
问题。如果不久之后我又为孩子和孙子之间的等级添加了另一个级别,我必须记住
让它也通过prop
(并改变我的测试!)。
然后我想,FLUX
模式可以帮助我吗? FLUX
解除这些层次结构之间依赖关系的优势之一是什么?我已经在使用ReFlux
作为此应用程序的一部分,所以为什么我不使用它。当子组件安装时,它可以将ref
值放到ReFlux
存储中,当单击父链接时,它会从商店中获取值并在其上调用.focus
。
然后我意识到我实际上是在渲染一个列表。因此,列表中的一个项目由parent-> child->孙子组成,然后列表中的下一个项目包含另一个父项> child->孙子等...问题是{{1}商店是单身人士。因此,当每个孙子被渲染时,它会将它的FLUX
值传递给商店并覆盖前一个。然后我想好了,我将在商店中使用一系列项目,这样我就可以存储每个孙子的ref
,当在父母点击链接时,它可以查找相应的孙子数组并设置焦点。
我的问题是,(最后我们到达那里:)
ref
商店来做这种行为吗?即在FLUX
商店中存储ref
个值?