마지막으로 필요한 반응 양식 라이브러리
5081 단어 javascriptreactformwebdev
react-hook-form
에 대한 빠른 가이드를 공유해야겠다고 생각했습니다.라이브러리 사용 방법을 보여주는 대신 라이브러리의 주요 이점을 보여주는 작은 실험을 해 보겠습니다.
성능 문제
이 간단한 양식, 두 개의 입력 및 제출 버튼이 있습니다.
import { useState } from "react";
import "./styles.css";
export default function App() {
return (
<div className="App">
<h1>Form</h1>
<form>
<label htmlFor="name">name</label>
<input
id="name"
type="text"
/>
<label htmlFor="age">age</label>
<input
id="age"
type="number"
/>
<button type="submit">submit</button>
</form>
</div>
);
}
상태 접근
먼저 상태를 사용하여 제어된 형식을 반응으로 만들 때 널리 사용되는 접근 방식을 사용합니다.
이름과 연령에 대한 두 가지 상태를 만들고 이를 사용하여 입력 값을 제어해 보겠습니다.
또한 결과 값을 설정한 다음 표시하는 함수
onSubmit
를 추가합니다.우리의 작은 실험을 위해 내부에서 발생하는 재렌더링의 양을 알고 싶습니다. 컴포넌트 외부에 리렌더링 횟수를 저장할 변수를 추가해 보겠습니다.
최종 결과!
작동 중인 코드를 보려면 샌드박스를 엽니다.
좋아, 그것은 많은 재 렌더링입니다 :(
이 작은 형태에서는 어떤 성능 문제도 발견하지 못하겠지만 현실적으로 현재 접근 방식은 확장성이 매우 낮습니다. 입력을 계속 추가하면 몇 가지 중요한 성능 문제를 발견할 것입니다.
react-hook-form 접근법
react-hook-form
가 링에 들어갈 시간입니다.이 라이브러리로 동일한 양식을 복제해 봅시다.
useForm
후크만 있으면 register
함수를 확장하고 handleSubmit
함수로 제출을 처리할 수 있습니다.당신이 그것을 볼 때 이것은 모두 의미가 있습니다. 여기 있습니다.
작동 중인 코드를 보려면 샌드박스를 엽니다.
단 하나의 외로운 렌더링, 초기 렌더링.
이미
react-hook-form
의 장점과 양식을 훨씬 더 잘 확장하는 데 어떻게 도움이 되는지 알 수 있을 것입니다.어떻게?
그렇다면 다시 렌더링할 필요 없이 값을 추적하는 방법은 무엇입니까?
두 가지 개념에서 ref 및 제어되지 않은 입력입니다.
첫 번째 양식에서 우리는 양식의 값을 추적하기 위해 상태에 의존하므로 값을 업데이트해야 할 때마다 상태도 업데이트되어야 하므로 다시 렌더링해야 합니다.
react-hook-form
대신 ref를 사용하여 값을 저장하고 다시 렌더링하지 않고 업데이트할 수 있습니다. 이 접근 방식에서는 입력 값을 제어할 필요가 없으므로 입력이 제어되지 않는다고 합니다.마무리
성능은
react-hook-form
의 주요 기능이지만 유효성 검사 및 오류 처리와 같이 직접 보고 탐색할 수 있는 더 많은 기능이 있습니다.예를 들어
여러분 중 일부는 이 유효성 검사가 기본적으로 입력 소품으로 수행될 수 있다는 의견을 쓰려고 한다는 것을 알고 있습니다. 그것은 사실이지만 오류를 표시하기 위해 사용자 정의가 필요한 순간 다른 것을 구현해야 합니다. 또한 이 라이브러리를 사용하여 훨씬 더 많은 유효성 검사 및 기타 기능을 구현할 수 있습니다.
이것이 도움이 되었기를 바라며, 아직 해보지 않았다면 이 훌륭한 라이브러리를 사용해 보고 가능하다면 그들을 지원하십시오.
도움이 되셨다면 다음 시간까지 좋아요와 공유 부탁드립니다.
Reference
이 문제에 관하여(마지막으로 필요한 반응 양식 라이브러리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ivanms1/the-last-react-form-you-will-ever-need-2f76텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)