React에서 여러 입력을 처리하는 방법
18996 단어 webdevreactcodenewbie
내 양식은 다음과 같습니다.
문제
Form
구성 요소에는 총 5개의 입력 필드가 있습니다. 5가지 상태 및 5가지onChange
인라인 함수import React, { useState } from "react";
export default function Form() {
const [newCompany, setCompany] = useState("");
const [newPosition, setPosition] = useState("");
const [newLink, setNewLink] = useState("");
const [newDate, setNewDate] = useState("");
const [newNote, setNewNote] = useState("");
return (
<form>
<input
value={newCompany}
onChange={(e) => setCompany(e.target.value)}
label="Company"
/>
<input
value={newPosition}
onChange={(e) => setPosition(e.target.value)}
label="Job Title"
/>
<input
value={newLink}
onChange={(e) => setNewLink(e.target.value)}
label="Job Link"
/>
<input
type="date"
value={newDate}
onChange={(e) => setNewDate(e.target.value)}
/>
<input
value={newNote}
onChange={(e) => setNewNote(e.target.value)}
label="Note"
/>
<button type="submit"> Submit </button>
</form>
);
}
reset
함수를 추가하려는 경우 내 코드는 다음과 같습니다. 🙅🏽♀️ const reset = () => {
setCompany("");
setPosition("");
setNewLink("");
setNewDate("");
setNewNote("");
};
해결책: 리팩토링 ✨
1단계: 입력 기본값 추가 및 상태 초기화
useState()
React Hook을 사용하여 values
객체initialValues
상태를 초기화합니다.중요: 해당 값이 있는 모든 입력 필드에
value
속성을 추가해야 합니다(예: values={values.company}
).const initialValues = {
company: "",
position: "",
link: "",
date: "",
note: "",
};
export default function Form() {
const [values, setValues] = useState(initialValues);
return (
<form>
<input
value={values.company}
onChange={(e) => setCompany(e.target.value)}
label="Company"
/>
//...
2단계: 다중 입력 변경 처리
onChange
핸들러handleInputChange
함수를 만들어야 합니다(아래 참조)name
및 value
특성을 가져오거나 추출합니다(아래 설명 참조 - 동일)values
함수와 spread operator setValues()
상태 개체를 기존 값으로 업데이트합니다.value
으로 트리거된 이벤트onChange
의 [name]: value
를 업데이트합니다.입력에
name
속성을 추가해야 하며 여기서 [name]: value
는 name
와 동일한 동적company: e.target.value
속성 키(입력에서 가져온 - 예: value
)를 설정한다는 의미입니다. 현재 입력 상태입니다.참조: React Docs
//...
const handleInputChange = (e) => {
//const name = e.target.name
//const value = e.target.value
const { name, value } = e.target;
setValues({
...values,
[name]: value,
});
};
return (
<form>
<input
value={values.company}
onChange={handleInputChange}
name="company" //IMPORTANT
label="Company"
/>
// ...
3단계: 입력 필드에 handleInputChange 추가
handleInputChange
prop에 onChange
함수를 추가합니다.import React, { useState } from "react";
const initialValues = {
company: "",
position: "",
link: "",
date: "",
note: "",
};
export default function Form() {
const [values, setValues] = useState(initialValues);
const handleInputChange = (e) => {
const { name, value } = e.target;
setValues({
...values,
[name]: value,
});
};
return (
<form>
<input
value={values.company}
onChange={handleInputChange}
name="company"
label="Company"
/>
<input
value={values.position}
onChange={handleInputChange}
name="position"
label="Job Title"
/>
// ... Rest of the input fields
<button type="submit"> Submit </button>
</form>
);
}
도움이 되었기를 바랍니다. 모든 의견과 피드백을 환영합니다! 🎊
Reference
이 문제에 관하여(React에서 여러 입력을 처리하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/deboragaleano/how-to-handle-multiple-inputs-in-react-55el텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)