2016-08-18 4 views
0

Wir verwenden react-if in unseren Render-Methoden für jede nicht-triviale Logik und ein ternary andernfalls.PropTyps Warnung auch wenn reaction-if's condition Attribut ist falsch

Es wird eine Warnung angezeigt, dass im folgenden Beispiel ein Objekt nicht an MyComponent gesendet wurde (aufgrund seiner propTypes). Dies liegt daran, dass person null ist und wir erwarten, dass MyComponent nicht gerendert wird. Sieht aus wie <If> erstellt/initialisiert MyComponent, obwohl das condition Attribut falsch ist.

import {If, Then} from 'react-if' 
... 

render() { 
    const person = null 

    <If condition={!!person}> 
    <Then> 
     <MyComponent person={person} /> 
    </Then> 
    </If> 
} 
... 

const MyComponent = ({person}) => (
    <h1>{person.name}</h1> 
)  

MyComponent.propTypes = { 
    person: PropTypes.object.isRequired 
} 

Jeder schöner Weg, um dies als Person zu {} Einstellung oder ein ternären bei Verwendung?

Dank

Antwort

0

Da Ihre Person prop null sein kann, ist es nicht erforderlich werden sollte.

MyComponent.propTypes = { 
    person: PropTypes.object 
} 

Es gab ein pull request in diesem Monat dieses zweideutige Verhalten zu ändern, und dies wird in der neuen Version berücksichtigt werden.

+0

Die Person Stütze sollte nie in der Lage sein, Null zu sein, da 's Bedingung Attribut falsch sein wird und sein Inhalt nie geschaffen wird (oder so dachte ich). Aber stellt sich geht in seine Kinder und schicken Sie die Requisiten, auch wenn seine Bedingung falsch ist. Gute Verbindung zur Zusammenführungsfrage, aber die neue Fehlermeldung ist viel besser. –

Verwandte Themen