很快我在重新渲染之前以某种方法调用setState之后检查状态,我发现状态值没有改变,因为尚未遵循渲染。到目前为止,我一直遵循这个概念。
但是,当涉及基于类的组件中的Mobx
action
方法时,我看到状态在重新渲染之前已经更改。
使用mobx时渲染上有什么区别吗?
// functional component
...
const [state, setState] = useState(false);
const init = () => {
if(..some condition logic){
console.log('check state before setState()', state) // false
setState(true);
console.log('check state after setState()', state) // false
}
}
useEffect(() => {
init();
},[])
使用Mobx
//class based component
...
@observable flag = false;
@action
setFlag( bool ) {
this.flag = bool;
}
init(){
if(... some condition logic) {
console.log (this.flag) // false
setFlag(true);
console.log(this.flag) // true
}
}
componentDidMount() {
init();
}