里面componentDidUpdate,当道具的变化是不会触发警报。
您可以运行codePen代码(https://codepen.io/anon/pen/BMmqKe?editors=1011)
const state = observable({
isOpen: false
})
state.close = function () {
state.isOpen = false
}
state.open = function () {
state.isOpen = true
}
const Home = observer(class home extends Component {
componentDidUpdate(prevProps) {
if (this.props.store.isOpen !== prevProps.store.isOpen) {
// this line is not executed
alert('reset');
}
}
render() {
return (
this.props.store.isOpen
? <button onClick={this.props.store.close}>close</button>
: <button onClick={this.props.store.open}>open</button>
);
}
})
render(<Home store={state} />, document.getElementById('app'))
qazxsw POI和POI qazxsw永远指向同一个qazxsw POI对象,所以this.props.store
将始终是相同的两侧的相等操作符。
你也可以使用的prevProps.store
运行一些代码时,该组件将因为在观察到的变化的更新。
store
你可以改变if语句在你componentDidUpdate():
isOpen