React 执行两次的问题?
代码如下:
const [isOk, setIsOk] = useState<any>(false);
const flag = useRef(false);
if (!flag.current) {
console.log('flag.current 111: ', flag.current);
flag.current = true;
console.log('flag.current 222: ', flag.current);
}
if (!isOk) {
console.log('===> isOk: ', isOk);
setIsOk(true);
}
解决方案:
方案一:去掉 <React.StrictMode>
<React.StrictMode>
<App />,
</React.StrictMode>,
方案二:useEffect(() => {})
const [isOk, setIsOk] = useState<any>(false);
const flag = useRef(false);
useEffect(() => {
if (!flag.current) {
console.log('flag.current 111: ', flag.current);
flag.current = true;
console.log('flag.current 222: ', flag.current);
}
if (!isOk) {
console.log('===> isOk: ', isOk);
setIsOk(true);
}
}, []);