所以我知道您可以通过以下方式访问组件的子级this.props.children
:
<MyComponent>
<span>Bob</span>
<span>Sally</span>
</MyComponent>
如果我对 Bob 和 Sally 感兴趣,这很好,但是如果我想与组成的组件(MyComponent
即如下所示)进行交互怎么办?Subcomp1
Subcomp2
render: function() {
return (
<div className="my-comp">
<Subcomp1 />
<Subcomp2 />
</div>
);
},
用例
我正在尝试创建一个管理包装组件子组件的选项卡索引(漫游选项卡索引: https ://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex)的高阶组件,所以如果我能获得包装组件的引用并按类型过滤它的子组件,那就太好了。
到目前为止,似乎唯一可行的方法是让每个组件为其每个子组件存储一个 ref,但这很乏味并且有点违背 HOC 的目的。有没有通用的方法来访问这些子组件?
我正在尝试做的一个粗略的例子:
var HOC = (ComposedComponent) => {
return React.createClass({
componentDidMount: function() {
const subComponents = this.composedComponent.subComponents; // Something like this would be nice
const menuItems = subComponents.filter(() => {
// figure out a way to identify components of a certain type
});
this.applyRovingTabIndex(menuItems);
},
render: function() {
return (
<ComposedComponent
ref={(c) => { this.composedComponent = c }}
{...this.props} />
);
}
});
};