【发布时间】:2021-10-22 11:48:25
【问题描述】:
我正在学习 Udemy 的 reactJS 教程,我正在自己尝试一些东西。
我想补充的是,我想在单击提交(添加目标)按钮时清除输入文本字段。我能做到,但我认为有一个问题。
完整代码
import React, { useState } from "react";
import Button from "../../UI/Button/Button";
import style from "./CourseInput.module.css";
const CourseInput = (props) => {
const [enteredValue, setEnteredValue] = useState("");
const [isValid, setIsValid] = useState(true);
const goalInputChangeHandler = (event) => {
setEnteredValue(event.target.value);
if (enteredValue.trim().length > 0) {
setIsValid(true);
}
console.log("=>" + enteredValue);
};
const formSubmitHandler = (event) => {
event.preventDefault();
if (enteredValue.trim().length === 0) {
setIsValid(false);
return;
}
props.onAddGoal(enteredValue);
// empty the inputbar and reset state (enteredValue)
console.log(event);
event.target[0].value = ""; // the main
setEnteredValue(""); // two lines.
};
return (
<form onSubmit={formSubmitHandler}>
<div className={`${style["form-control"]} ${!isValid && style.invalid}`}>
<label>Course Goal</label>
<input type="text" onChange={goalInputChangeHandler} />
</div>
<Button type="submit">Add Goal</Button>
</form>
);
};
export default CourseInput;
正如您在上面的代码中看到的,我正在通过表单事件访问输入字段。
我通过我认为是硬编码的索引号访问输入字段。将来如果表单元素的数量增加/减少,索引号可能会改变。所以我想做的是在不使用索引的情况下访问输入值。这可能吗?(我知道是),我该怎么做?
【问题讨论】:
-
enteredValue是从哪里来的? -
您指的是这里的索引吗?
event.target[0].value = ""; -
你可以使用 refs 来做这件事。看看reactjs.org/docs/refs-and-the-dom.html
-
请同时显示 JSX
-
entetedValue 是一个反应状态。它具有来自输入字段的值。 @丹尼尔
标签: javascript arrays reactjs dom dom-events