Reactjs this.props和prevProps是相等的
在componentDidUpdate内部,道具更改时不会触发警报 您可以在codePen()中运行此代码Reactjs this.props和prevProps是相等的,reactjs,mobx,mobx-react,Reactjs,Mobx,Mobx React,在componentDidUpdate内部,道具更改时不会触发警报 您可以在codePen()中运行此代码 const state=可观察({ 伊索彭:错 }) state.close=函数(){ state.isOpen=false } state.open=函数(){ state.isOpen=true } const Home=observer(类Home扩展组件{ componentDidUpdate(prevProps){ if(this.props.store.isOpen!==pr
const state=可观察({
伊索彭:错
})
state.close=函数(){
state.isOpen=false
}
state.open=函数(){
state.isOpen=true
}
const Home=observer(类Home扩展组件{
componentDidUpdate(prevProps){
if(this.props.store.isOpen!==prevProps.store.isOpen){
//此行未执行
警报(“重置”);
}
}
render(){
返回(
this.props.store.isOpen
?关闭
:打开
);
}
})
render(,document.getElementById('app'))
此.props.store
和prevProps.store
将始终引用相同的store
对象,因此isOpen
在equals运算符的两侧将始终相同
您可以改为在组件因可观察对象的更改而更新时使用运行一些代码
const Home = observer(class home extends Component {
componentWillReact() {
alert('reset');
}
render() {
return (
this.props.store.isOpen
? <button onClick={this.props.store.close}>close</button>
: <button onClick={this.props.store.open}>open</button>
);
}
})
const Home=observer(类Home扩展组件{
组件将反应(){
警报(“重置”);
}
render(){
返回(
this.props.store.isOpen
?关闭
:打开
);
}
})
您只需更改componentDidUpdate()中的if语句即可:
这些答案对你有用吗?如果是这样的话。
const Home = observer(class home extends Component {
componentWillReact() {
alert('reset');
}
render() {
return (
this.props.store.isOpen
? <button onClick={this.props.store.close}>close</button>
: <button onClick={this.props.store.open}>open</button>
);
}
})
!this.props.store.isOpen ? alert("reset"): null;