私はReactに小さなToolbar
コンポーネントを書いています。ここでは、それが使用されるべき方法は次のとおりです。子どもの複雑なPropTypeを指定する
<Toolbar>
<ToolbarButtonSearch />
<ToolbarButtonFold />
</Toolbar>
または
<Toolbar>
<ToolbarButtonSearch />
</Toolbar>
または
<Toolbar>
<ToolbarButtonFold />
</Toolbar>
私は、Toolbar
が受け入れる唯一の子供たちがToolbarButtonSearch
の一つであることを指定できるようにしたいと思いますToolbarButtonFold
のいずれか、またはそれぞれのいずれかです。ここで
export default class Toolbar extends React.Component {
static get propTypes() {
const acceptedChildren =
React.PropTypes.oneOfType([
React.PropTypes.instanceOf(ToolbarButtonFold),
React.PropTypes.instanceOf(ToolbarButtonSearch)
]);
return {
children: React.PropTypes.oneOfType([
React.PropTypes.arrayOf(acceptedChildren),
acceptedChildren
]).isRequired
};
}
render() {
return (
<div className="toolbar">
{this.props.children}
</div>
);
}
}
私はそれを使用している方法は次のとおりです:ここで
は(輸入品を含めない)私が今持っているものだ これは、次のエラーが発生し<Toolbar>
<ToolbarButtonFold />
</Toolbar>
:
Warning: Failed prop type: Invalid prop 'children' supplied to 'Toolbar'.
私は何が間違っているのか分かりません。どんな洞察も非常に役に立ちます。ありがとう!
私はかなりあなたが試みていることを達成する方法がないと確信しています。 childrenプロパティはReact.PropTypes.node型であり、単一の要素または要素の配列に制限できますが、要素自体はコンポーネントクラスのインスタンスではありません。 –
これは残念であり、率直に言って驚くべきことです。私は、Reactがこの機能を持つことを期待しています。 特定の子供たちを強制するより良いアプローチとしては何をお勧めしますか?そこにアプローチがありますか? – camden