Ich schreibe eine kleine Toolbar
Komponente in React. Hier ist, wie es verwendet werden soll:Angeben komplexer PropTypes für Kinder
<Toolbar>
<ToolbarButtonSearch />
<ToolbarButtonFold />
</Toolbar>
oder
<Toolbar>
<ToolbarButtonSearch />
</Toolbar>
oder
<Toolbar>
<ToolbarButtonFold />
</Toolbar>
Ich mag würde der Lage sein, zu spezifizieren, dass die einzigen Kinder Toolbar
sind eine der ToolbarButtonSearch
akzeptiert, einer von ToolbarButtonFold
, oder einer von jedem.
Hier ist, was ich habe jetzt (ohne Importe):
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>
);
}
}
Hier ist, wie ich es bin mit:
<Toolbar>
<ToolbarButtonFold />
</Toolbar>
Diese in der folgenden Fehler führt:
Warning: Failed prop type: Invalid prop 'children' supplied to 'Toolbar'.
Ich bin mir nicht sicher, was ich falsch mache. Jede Einsicht wäre sehr hilfreich. Vielen Dank!
Ich bin mir ziemlich sicher, dass es keine Möglichkeit gibt, das zu erreichen, was Sie versuchen. Die Eigenschaft children ist vom Typ React.PropTypes.node, die Sie auf ein einzelnes Element oder ein Array von Elementen beschränken können, aber die Elemente selbst sind keine Instanzen der Komponentenklasse. –
Das ist enttäuschend und, ehrlich gesagt, überraschend. Ich würde erwarten, dass React diese Funktionalität hat, weil ich nichts Außergewöhnliches versuche. Was schlagen Sie als einen besseren Ansatz zur Durchsetzung bestimmter Kinder vor? _Ist da ein Ansatz? – camden