this.setState({state1:false},()=>{console.log(this.state.state1)})
那么hooks如何callback执行获取修改之后的state呢
setState( { name: "Michael" }, () => console.log(this.state) );
然而setState并没有这样的实现
所以
const [counter, setCounter] = useState(0);
const doSomething = () => { setCounter(123); }
useEffect(() => { console.log('Do something after counter has changed', counter); }, [counter]);
如果初始化不想执行呢
import React, { useEffect, useRef } from 'react';
const [counter, setCounter] = useState(0);
const didMount = useRef(false);
const doSomething = () => {
setCounter(123);
}
useEffect(() => {
// Return early, if this is the first render:
if ( !didMount.current ) {
return didMount.current = true;
}
// Paste code to be executed on subsequent renders:
console.log('Do something after counter has changed', counter);
}, [counter]);
那么redux呢?dispatch之后的值获取?为什么setState不设计 callback呢?