In meiner reagieren-redux Anwendung, ich habe die Komponente folgenden reagieren:Redux: render compoent basierend auf einer Bedingung
render(){
return(<div style={this.setStyler()} >
{this.props.value}
</div>);
}
Die setStyler()
ein Reduktions manipulieren und einen Wert zurückgeben, die als css
angewandt werden sollen.
Das Problem ist, ich konfrontiert mit dem Fehler:
Cannot update during an existing state transition (such as within render or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to componentWillMount.
Es scheint, dass redux mir nicht erlauben Komponente basiert auf Zustand zu machen. aber ich weiß nicht, wie ich dieses Problem beheben kann?
aktualisieren:
setStyler(){
if(this.props.activeWord!=this.props.wordId)
return { color:'black', fontWeight: 'normal' };
if(this.props.letterId>this.props.activeLetter && this.props.activeWord==this.props.wordId)
return { color:'black', fontWeight: 'normal' };
if(this.props.letterId==this.props.activeLetter && this.props.activeWord==this.props.wordId){
if(this.props.value==this.props.newTypedLetter){
this.props.color({ color:'green', fontWeight: 'bold' }); //change reducer
return { color:'green', fontWeight: 'bold' };
}
if(this.props.value!=this.props.newTypedLetter){
this.props.color({ color:'red', fontWeight: 'bold' }); ////change reducer
return { color:'red', fontWeight: 'bold' };
}
}
if(this.props.letterId<this.props.activeLetter && this.props.activeWord==this.props.wordId)
return this.props.letterColor;
}
Schwierig in der Hilfe mit den bereitgestellten Informationen. Fügen Sie den Funktionscode setStyler() –
hinzu Der Code, den Sie bereitgestellt haben, wird den Fehler, den Sie sehen, nicht verursachen. Wo sonst verwenden Sie setState()? –