![](/img/trans.png)
[英]How to manipulate the DOM inside of map function using onChange event on one of the checkboxes with react hooks
[英]How to wait for onChange event to set Value using react hooks?
我想訪問handleKeyDown
函數內的value
狀態變量的value
。 但是,當我繼續輸入時,我注意到value
沒有設置為最新的輸入值,而是設置為以前的輸入狀態。 我使用setTimeout
以便先調用handleChange
,然后setValue()
函數會更改 value 的value
。 然后更改的值將反映在handleKeyDown
函數中。
import "./styles.css";
import { useState } from "react";
export default function App() {
const [value, setValue] = useState("");
const handleChange = (e) => {
console.log("called handle changed");
setValue(e.target.value);
};
const handleKeyDown = (e) => {
console.log("called keydown");
console.log(value);
};
return (
<div className="App">
<input
value={value}
onChange={handleChange}
onKeyDown={(e) => setTimeout(() => handleKeyDown(e), 0)}
/>
</div>
);
}
e.target.value
顯示最新和所需的值,但value
本身顯示舊值。 如何等到handleChange
使用setValue
設置值並使用handleKeyDown
value
?
您可以對當前值使用 useRef 鈎子
`
import "./styles.css";
import { useState, useRef } from "react";
export default function App() {
const [value, setValue] = useState("");
const updatedValue = useRef("");
const handleChange = (e) => {
console.log("called handle changed");
setValue(e.target.value);
updatedValue.current = e.target.value;
};
const handleKeyDown = (e) => {
console.log("called keydown");
console.log(updatedValue.current);
};
return (
<div className="App">
<input
value={value}
onChange={handleChange}
onKeyDown={(e) => setTimeout(() => handleKeyDown(e), 0)}
/>
</div>
);
}
`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.