2016-10-23 4 views
0

Gibt es die Möglichkeiten, wie diese Idee umsetzen:React: Führen Sie einige Überprüfung vor dem Rendern

Ich möchte überprüfen, bevor zu rendern. Wenn die Prüfung wahr ist, dann rendern. Aber wenn die Prüfung falsch ist, dann muss ich zuerst setState und erst nach dem Rendern tun.

Danke.

+0

vielleicht innerhalb 'componentDidMount() {}'? –

+0

'render() {}' ist nicht der Ort für setState, sollten Sie Ihren Zustand in Komponentenlebenszyklus-Methoden behandeln: https://facebook.github.io/react/docs/react-component.html – kouak

+0

Deshalb habe ich fragte diese Frage. Mein crome gib mir einen Fehler über die Verwendung von 'setState' in render. –

Antwort

1

Ich denke, componentWillMount() ist buchstäblich, was Sie wollen, aber es in die constructor() setzen könnte ein besserer Ort dafür sein.

class MyComponent extends React.Component { 
    constructor(props) { 
    super(props); 
    if (theCheck() === false) { 
     this.state = { 
     // ... 
     } 
    } 
    } 
} 
+0

Was ist super? Und warum verwenden wir nur ** State **, nicht ** SetState **? –

+2

'super()' ruft die ursprüngliche Konstruktorfunktion aus der erweiterten Klasse auf. In diesem Fall würde es den Konstruktor von 'React.Component' aufrufen. 'setState()' ist eine Möglichkeit, React mitzuteilen, dass die Komponente erneut gerendert werden muss, da sich ihr Status geändert hat. Wenn Sie 'this.state' nur aktualisieren würden, würde es keinen Unterschied feststellen. Die Verwendung von 'this.state' im Konstruktor ist gültig, da die Komponente noch nicht gerendert wurde. – casr

Verwandte Themen