React usePrevious函数在MDN焦点管理示例中的工作原理答疑
关于usePrevious钩子的执行时机疑问
此前已有相关问题发布,但我仍需进一步澄清。
组件代码:
const [editing, setEditing] = useState(false); const wasEditing = usePrevious(editing); useEffect(() => { if(!wasEditing && editing){ editFieldRef.current.focus(); } if(wasEditing && !editing){ editButtonRef.current.focus(); } }, [wasEditing,editing])
usePrevious钩子实现:
function usePrevious(value){ const ref = useRef(); useEffect(() => { ref.current = value; }) return ref.current; // <=== 此行 }
根据我的理解,结合之前回答遗漏的部分步骤,我认为执行优先级如下:
- 执行useEffect()函数
- 运行其余代码(即上面标注注释的那一行)
请问usePrevious函数何时以及为何会再次运行?
内容的提问来源于stack exchange,提问作者Dimitrios Tsimaras
相关产品推荐
相关产品推荐

