在React中,我经常在setState()
之后进行其他操作(或api交互)中使用常量的状态,但是在代码的这一部分运行时,状态仍未更新是很常见的,时间导致错误/意外行为。
是否有处理此问题的最佳实践?还是useState
本身的推荐替代品?
谢谢:)
答案 0 :(得分:1)
状态更改后,您可以使用useEffect
执行函数,但是此方法也将触发useEffect
第一次渲染中的内容,并修复需要创建自定义项的问题钩
const [age, setAge] = useState(0)
useEffect(() => {
console.log('the age has changed', age)
}, [age])
答案 1 :(得分:0)
您可以使用useEffect
钩子在组件渲染到dom之前加载状态,也可以在useEffect中使用异步方法调用api
useEffect(()=>{
const myfunc=async()=>{
await //do api calls here
}
myfunc()
})
答案 2 :(得分:0)
如果没有钩子,则setState将获得一个回调函数,但是使用钩子时,您应使用useEffect
来实现。
答案 3 :(得分:0)
由于setState()是异步的,因此大多数错误/意外的结果都会由于此行为而发生,因此您需要通过播放状态来正确理解此异步行为。如果使用正确的状态处理来正确处理组件的生命周期,那么您将不会看到任何意外行为。更多信息:https://reactjs.org/docs/state-and-lifecycle.html和https://css-tricks.com/understanding-react-setstate/