2017-02-19 2 views
0

Ich erstelle eine Komponente, die ich den Elementtyp konfigurierbar sein soll.Was ist der richtige PropTypes für Komponente oder Element

So Container-Element könnte entweder wie in den defaultProps oben sein oder es könnte eine Komponente sein.

<Col containerElement={<MyComponent} /> 

kann ich die propTypes bekommen zu bestätigen, ich habe dies versucht: richtig

Col.propTypes = { 
    className: PropTypes.string, 
    containerElement: PropTypes.oneOf([ 
    PropTypes.string, 
    PropTypes.element 
    ]), 

Aber es lässt sich aber nicht.

Warnung: Fehler PropType: Ungültige prop componentClass Wert div zu Col geliefert,

+0

Was genau geben Sie an die Komponente weiter? Wenn der Wert wirklich ein Element ist, kann man es trotzdem nicht als '' verwenden. '' ist syntaktischer Zucker für 'React.createElement ('containerElement', ...)'. Auch wenn es eine Zeichenfolge ist, wird "containerElement" an "React.createElement" übergeben, nicht die * Variable "containerElement". Bevor ich mich über den Validierungsfehler Gedanken mache, würde ich sicherstellen, dass der Code selbst das korrekte Ergebnis erzeugt (d.h. korrekt funktioniert). –

Antwort

1

Sie haben nicht componentClass Eigentum auf Ihrer Komponente definiert - Ihr prop ist containerElement genannt und Sie sollten oneOfType verwenden :

Col.propTypes = { 
    className: PropTypes.string, 
    containerElement: PropTypes.oneOfType([ 
    PropTypes.string, 
    PropTypes.element 
    ]) 
+0

Obwohl das korrekt ist, glaube ich nicht, dass dies das Validierungsproblem lösen wird. –

+0

Das war ein Tippfehler von mir. Mit dem korrekten Namen schlägt die Validierung weiterhin fehl. – dagda1

Verwandte Themen