onclick 中的设置项未记录预期输出
Set item in onclick is not logging expected output
我正在编写一个简单的反应代码,将值添加到按钮列表 onClick
。添加后,我将其记录在同一个块中。目前,我的问题是,使用 n-1
输入的字符串进行日志记录。即,如果我输入 egg
,然后添加 milk
,在添加 milk
之后,我会看到 egg
已登录,依此类推。这是我的代码。
function App() {
const [list, setList] = useState([]);
const [gItem, setGItem] = useState("");
const AddItem = (e) => {
e.preventDefault();
setList([...list, gItem]);
console.log(list);
};
return (
<>
<form className="grocery-form">
<h3>grocery bud</h3>
<div className="form-control">
<label htmlFor="name"></label>
<input
type="text"
placeholder="e.g. eggs"
className="grocery"
name="name"
id="name"
onChange={(e) => setGItem(e.target.value)}
/>
<button className="submit-btn" type="submit" onClick={AddItem}>
Submit
</button>
</div>
</form>
<div className="grocery-container">
<List items={list} />
</div>
</>
);
}
我无法理解哪里出错了。
setList 异步更新状态,因此如果您在使用它之后记录状态,将显示之前的值,要使其在更改此列表后记录当前状态,您可以像这样使用 useEffect 钩子:
useEffect(() => {
console.log(list);
}, [list])
我正在编写一个简单的反应代码,将值添加到按钮列表 onClick
。添加后,我将其记录在同一个块中。目前,我的问题是,使用 n-1
输入的字符串进行日志记录。即,如果我输入 egg
,然后添加 milk
,在添加 milk
之后,我会看到 egg
已登录,依此类推。这是我的代码。
function App() {
const [list, setList] = useState([]);
const [gItem, setGItem] = useState("");
const AddItem = (e) => {
e.preventDefault();
setList([...list, gItem]);
console.log(list);
};
return (
<>
<form className="grocery-form">
<h3>grocery bud</h3>
<div className="form-control">
<label htmlFor="name"></label>
<input
type="text"
placeholder="e.g. eggs"
className="grocery"
name="name"
id="name"
onChange={(e) => setGItem(e.target.value)}
/>
<button className="submit-btn" type="submit" onClick={AddItem}>
Submit
</button>
</div>
</form>
<div className="grocery-container">
<List items={list} />
</div>
</>
);
}
我无法理解哪里出错了。
setList 异步更新状态,因此如果您在使用它之后记录状态,将显示之前的值,要使其在更改此列表后记录当前状态,您可以像这样使用 useEffect 钩子:
useEffect(() => {
console.log(list);
}, [list])