预先了解 setState 的两种传参方式1、直接传入新值 setState(options);列如:const[state,setState]=useState(0);setState(state+1);2、传入回调函数 setState(callBack);例如:const[state,setState]=useState(0);// prevState 是改变之前的 state 值,return 返回的值会作为新状态覆盖 state 值setState((prevState)=>prevState+1);useState 异步回调获取不到最新值及解决方案通常情况下 setState 直接使用上述第一种方式传参即可,但在一些特殊情况下第一种方式会出现异常;
例如希望在异步回调或闭包中获取最新状态并设置状态,此时第一种方式获取的状态不是实时的,React 官方文档提到:组件内部的任何函数,包括事件处理函数和 Effect,都是从它被创建的那次渲染中被「看到」的,所以引用的值任然是旧的,最后导致 setState 出现异常:importReact,{useState,useEffect}from"react";constApp=()=>{const[arr,setArr]=useState([0]);useEffect(()=>{console.log(arr);},[ar
...
继续阅读
(11)