请帮助我了解在函数体内调用状态设置器的方式
const MyComponent = () => {
const [state,setState] = useState(0);
const flagRef = useRef(true);
if (flagRef.current) setState(1);
useEffect(() => {
flagRef.current = false;
});
return 'MyComponent';
}
运行此代码将导致无限重新渲染。根据React文档,它说setState函数用于更新状态。它接受一个新的状态值,并使该组件重新渲染入队。我解释为,下一个渲染将被排队并在当前渲染完成后运行,包括运行效果。但是,这种效果根本不会运行,甚至不会运行一次,并且即使代码再次更新相同的状态(即1
),重新渲染的链也将永远发生而没有任何救助。请帮助我理解这段代码的内部工作。