React将焦点设置为父子孙子层级中的孙子

时间:2015-06-04 09:47:59

标签: reactjs flux

我有React组件的经典父级>子级>孙级层次结构。当我单击父级中的链接时,我想将焦点设置为孙子组件中的文本框。

我的第一次尝试是将callback函数传递给父母的props,然后是孩子,然后是孙子。孙子然后调用回调,将其ref属性传递给回调。然后由父组件存储该引用,以便在父组件中单击链接时,它可以使用引用的孙组件的getDOMNode,并只需调用focus()来设置其焦点。这种配置有效。

但我不满意必须通过子组件中的prop传递回调。子组件不需要prop,只是将它传递给孙子。 AFAIK这是一个经典的React问题。如果不久之后我又为孩子和孙子之间的等级添加了另一个级别,我必须记住 让它也通过prop(并改变我的测试!)。

然后我想,FLUX模式可以帮助我吗? FLUX解除这些层次结构之间依赖关系的优势之一是什么?我已经在使用ReFlux作为此应用程序的一部分,所以为什么我不使用它。当子组件安装时,它可以将ref值放到ReFlux存储中,当单击父链接时,它会从商店中获取值并在其上调用.focus

然后我意识到我实际上是在渲染一个列表。因此,列表中的一个项目由parent-> child->孙子组成,然后列表中的下一个项目包含另一个父项> child->孙子等...问题是{{1}商店是单身人士。因此,当每个孙子被渲染时,它会将它的FLUX值传递给商店并覆盖前一个。然后我想好了,我将在商店中使用一系列项目,这样我就可以存储每个孙子的ref,当在父母点击链接时,它可以查找相应的孙子数组并设置焦点。

我的问题是,(最后我们到达那里:)

  1. 这是一个合理的方法吗?
  2. 我应该使用ref商店来做这种行为吗?即在FLUX商店中存储ref个值?

0 个答案:

没有答案