【发布时间】:2022-12-15 05:51:24
【问题描述】:
因此,我有一个受控输入组件和一个采用另一个状态变量的 div。这两个状态在单个回调函数中更新。为什么 input 中的值和下面 div 中的文本不同步?
`import React, {useState, useRef} from "react";
const Input =()=>{
const [search, setSearch] = useState('jk');
const [text, setText] = useState('');
const onChange =(e)=>{
setSearch(e.target.value)
setText(search)
}
return(
<>
<input type='text' value={search} onChange={onChange} />
<div>{text}</div>
</>
)
};
export default Input`
我知道关闭和陈旧状态,但 React 18 的自动批处理不是应该解决这个问题吗?
【问题讨论】:
-
自动批处理是,在运行所有 setState 之后更新状态,然后最后一个一个地设置它们 .... 所以
search更新的值尚不可用,并且在下一个渲染中可用,自动批处理与它 ..