我通过查阅资料了解到setState只有在setTimeout或者原生事件里才会同步执行,我测试后在类组件里确实是这样,而在函数组件里就不行了,下面代码打印1和0。在类里面打印1,函数组件打印0
我想在函数组件useState中实现和this.setState的第二个回调参数一样的效果,希望可以set后立刻能读取最新的state,有什么方法呢
```javascript
import { useEffect, useState, Component } from "react";
class Demo extends Component {
state = {
num: 0,
};
componentDidMount() {
this.setState({ num: num + 1 });
setTimeout(() => {
console.log(this.state.num);
});
}
render() {
return null;
}
}
const HookDemo = () => {
const [num, set] = useState(0);
useEffect(() => {
set(num + 1);
setTimeout(() => {
console.log(num);
});
}, []);
return (
<>
<Demo />
);
};
export default HookDemo;
```
那只能useEffect 里 能拿到
useEffect(() => {
},[num])
看下这篇博客,也许你就懂了,链接:React中setState什么时候是同步的,什么时候是异步的?