Ich habe eine Komponente, die eine beobachtbare als Eigenschaft hat:Detect-Update in beobachtbaren prop
class Store {
@observable color = "red"
}
const store = new Store();
@observer
class MyComponent extends React.Component {
componentWillReceiveProps(nextProps) {
// Not called!
console.log("Component will receive props", nextProps.store.color)
}
componentDidMount() {
console.log("Component did mount", this.props.store.color)
}
changeColor =() => {
this.props.store.color = (this.props.store.color==="red")? "blue":"red";
};
render() {
return <div>
color: {this.props.store.color}
<button onClick={this.changeColor}>Change color</button>
</div>
}
};
ReactDOM.render(<MyComponent store={store} />, document.body)
Mein Problem ist, dass componentWillReceiveProps
nie aufgerufen wird, wenn die beobachtete Variable geändert wird (durch Klicken auf die Schaltfläche), noch ist componentDidReceiveProps
oder shouldComponentUpdate
. Allerdings kann ich im gerenderten Code sehen, dass die Farbe tatsächlich im Laden geändert wird.
der seltsame Teil hier ist ich eine App abgeschlossen, wo 'componentWillReceiveProps' tatsächlich aufgerufen wird. Danke – Ricbermo