は、だから私は、あなたがthis.props.children
とコンポーネントの子にアクセスできることを知っている:私はボブとサリーに興味があるんだけど、あれば素晴らしいですReactコンポーネントのサブコンポーネントにアクセスする方法はありますか?
<MyComponent>
<span>Bob</span>
<span>Sally</span>
</MyComponent>
私はMyComponent
を構成するコンポーネント(と対話したい場合すなわちSubcomp1
およびSubcomp2
)?
render: function() {
return (
<div className="my-comp">
<Subcomp1 />
<Subcomp2 />
</div>
);
},
ユースケース私はタブインデックスを管理し、より高次のコンポーネントを作成しようとしてい
(ロービングタブインデックス:https://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex)包まれたコンポーネントのサブコンポーネントの、それは素晴らしいことだので、ラップされたコンポーネントへの参照を取得し、そのコンポーネントをサブタイプ別にフィルタリングできるかどうか。
これまで可能だった唯一のアプローチは、各コンポーネントにそれぞれのサブコンポーネントの参照を格納させることですが、これは面倒であり、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} />
);
}
});
};
を働いた、あなたはそれぞれの '<サブコンポーネントに' tabIndex'を操作できるようにしたいです/> '? ' 'のような小道具を送るだけではいかがでしょうか。なぜ具体的にrefが必要なのですか? –
@NanduKalidindi申し訳ありませんが、私は最良の例を提供していないと思います。私はロービングタブインデックスのようなものをしようとしています:https://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex メニューコンポーネントにはいくつかの種類があり、 'コンポーネントとは異なりますが、それ以外は非常に異なります。私は、それぞれのコードを繰り返すことなく、すべてのメニューコンポーネントにロービングタブインデックス機能を与えることを忘れました。 – JayPea
tabIndexは親コンポーネントによって正しく決定されますか?私が正しく理解すれば、フォーカスされた要素はtabIndexを '0'に設定し、残りに' -1'を設定しますか? –