На самом деле, вы должны избегать использования this
при использовании реакционных хуков.Это вызывает побочные эффекты.Вот почему реагируют команды создания react hooks
.
Если вы удалите коды, которые пытаются связать this
, вы можете просто передать setName
из Parent
в Child
и вызвать его в handleChange
.Более чистый код!
function Parent() {
const [Name, setName] = useState("");
return <div> {Name} :
<Child setName={setName} ></Child>
</div>
}
function Child(props) {
const [Name, setName] = useState("");
function handleChange(ele) {
setName(ele.target.value);
props.setName(ele.target.value);
}
return (<div>
<input onChange={handleChange} value={Name}></input>
</div>);
}
Более того, вам не нужно создавать две копии Name
(одну в Parent
и другую в Child
).Придерживайтесь принципа «Единого источника истины», Child
не обязан владеть государством Name
, но получать его от Parent
.Узел Очистителя!
function Parent() {
const [Name, setName] = useState("");
return <div> {Name} :
<Child setName={setName} Name={Name}></Child>
</div>
}
function Child(props) {
function handleChange(ele) {
props.setName(ele.target.value);
}
return (<div>
<input onChange={handleChange} value={props.Name}></input>
</div>);
}