Formik을 사용한 검색 기능
이 기능을 구축하는 동안 특히 입력 필드가 많을 때 모든 입력 요소의 상태 처리를 더 쉽게 만드는 React 후크useFormik()를 사용할 것입니다. 블로그에서 Formik의 이점을 자세히 확인할 수 있습니다.
이야기는 그만하고 코딩을 시작해 봅시다!
1단계 - 더미 데이터 생성
export const dummyObject = [
{
id: "1",
firstName: "Raj",
lastName: "Bhinde",
userLocation: "Mumbai"
},
{
id: "2",
firstName: "Smrithi",
lastName: "Mohandas",
userLocation: "Bangalore"
},
{
id: "3",
firstName: "Dhaval",
lastName: "Bhinde",
userLocation: "New Jersey"
},
{
id: "4",
firstName: "Mohit",
lastName: "Bhinde",
userLocation: "Thane"
},
{
id: "5",
firstName: "Shubham",
lastName: "Dawkhar",
userLocation: "Pune"
}
];
2단계 - 입력 요소 생성
<form>
<label htmlFor="firstName">First Name</label>
<input type="text" />
<label htmlFor="lastName">Last Name</label>
<input type="text" id="lastName" />
<label htmlFor="location">Location</label>
<input type="text" id="location"/>
</form>
3단계 - 코드에 useFormik() 통합
const formik = useFormik({
initialValues: {
firstName: "",
lastName: "",
userLocation: ""
},
onSubmit: (values) => {
console.log(values);
}
});
이제 입력 요소의 변경 사항은 다음과 같습니다.
<form onSubmit={formik.handleSubmit}
<input
aria-label="input-firstName"
id="firstName"
type="text"
onChange={formik.handleChange}
value={formik.values.firstName}
/>
</form>
유형에 관계없이 모든 입력 상자에 대해 동일한 onChange & value 구문을 계속 사용할 수 있습니다. 이것은 formik이 스프레드 연산자 및 구문 작성을 제거하는 데 도움이 되는 곳입니다. 자체적으로 상태 업데이트를 처리합니다.
이제 제출 버튼을 누르면 콘솔에서 입력 값을 볼 수 있습니다. 이는 3단계에서 전달한 onSubmit 기능과 입력에 전달된 값을 콘솔에 기록하기 때문에 발생합니다.
다음 단계로 나아가자!
4단계 - 빈 값을 제거합니다.
우리는 검색 기능을 만들고 있기 때문에 입력에 제공된 값을 사용하여 필터링하고 formik에서 반환된 빈 값을 제거하기를 원합니다. 이를 위한 함수를 만들어 봅시다.
Before you look into the solution below, try to write a function for this by yourself. Basically you just have to delete the empty values of the keys in the JSON object.
const filterFunction = (values) => {
const data = {...values};
Object.keys(data).forEach((key) => {
if (data[key] === "") {
delete data[key];
}
});
}
이제 onSubmit의 console.log 위치에서 값을 인수로 사용하여 이 함수를 호출해 보겠습니다. 입력에 입력한 값만 JSON으로 가져오는 것을 볼 수 있습니다.
5단계 - 데이터를 필터링하는 함수를 만들어 보겠습니다.
Before you look into the solution below, try to write a function for this by yourself. Here, we are trying return the data where the key & value of our object matches with the dummyObject we created.
var finalObject = dummyObject.filter(function (item) {
for (var key in data) {
if (item[key] !== data[key]) return false;
}
return true;
});
setSearchResults(finalObject);
여기에서 최종 객체의 결과를 저장하고 함수 외부에서 액세스하여 데이터를 표시하기 위해 useState를 생성했습니다.
6단계 - 데이터를 표시해 보겠습니다. 양식 태그 외부에 아래 코드를 작성하십시오.
{searchResults.length !== 0 &&
searchResults.map((value, key) => {
return (
<div key={key}>
{value.firstName} {value.lastName} {value.userLocation}
</div>
);
})}
짜잔! 이제 검색 기능이 있는 양식이 생겼습니다.
여기까지 오셨다면 제 첫 번째 블로그를 읽어주셔서 감사합니다. 모든 종류의 질문 및 피드백을 환영합니다.
누구나 필요로 하는 경우를 대비하여 여기에 CodeSandBox 링크 포함 -
Reference
이 문제에 관하여(Formik을 사용한 검색 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/irajbhinde/search-functionality-using-formik-o9o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)