태그 목록
전체보기 (114)백준(7)prisma(5)NEXTSTEP(4)nextjs(4)TDD(3)PlanetScale(3)axios(3)MVC(2)hydration(2)invalidateQueries(2)jest(2)e2e-test(2)hydration-error(2)ps(2)styled components(2)React-Portal(2)git(2)객체(2)cookie(2)DP(2)react-query(2)react hook form(2)js(2)CRUD(2)reactjs(2)model(2)mongodb(2)GSAP(2)lexical scope(2)cypress(2)참조 데이터 depth(1)백준 1931 JS(1)API Endpoint 차이(1)Dev Server has been initialized using an options object that does not match the API schema(1)promise(1)import(1)useModal(1)순수함수(1)CommonJS ES(1)options.allowedHosts[0] should be a non-empty string(1)Prisma CRUD(1)Git 전략(1)API(1)ORM(1)setInterval 최적화(1)npm(1)schema(1)Analysis paralysis(1)push(1)framework(1)library(1)26043(1)Scope Chaning(1)restful api(1)팀프로젝트 회고(1)react spring(1)골드2(1)queue(1)호이스팅(1)scema prisma code formatter(1)강준님(1)next-step(1)named export(1)백준 2749(1)Proxy(1)react router dom(1)백준 1639 JS(1)npm 모듈 만들기(1)11286(1)백준 9471(1)쿠키(1)백준 11650 JS(1)duplicated status code(1)Interceptor(1)골드1(1)schema prisma prettier(1)11279(1)4889(1)PlanetScale 사용법(1)10845(1)setQueriesData(1)Factory Pattern(1)memoization(1)도메인 분리(1)validation(1)Commit Convention(1)dynamic export(1)도메인(1)DeepCopy(1)axios interceptor(1)conflict 해결(1)children type(1)React(1)JS 클린코드 5기(1)1328번(1)트리쉐이킹(1)status code(1)피사노 주기(1)route 차단(1)image preLoad(1)동적 라우팅 optional rendering(1)git amend(1)골드3(1)yarn.lock(1)redux-react(1)React Spring Proxy(1)동적인 ESLint 설정(1)multipart/form-data(1)props drilling(1)python(1)프레임워크 라이브러리 차이점(1)PlanetScale 환경설정(1)reactjs img preload(1)export default(1)export(1)useParams(1)domain(1)react-modal(1)graphql(1)경주게임(1)styled component(1)ESLint(1)webpack(1)10799(1)내가 만든(1)git flow(1)1158(1)endpoint(1)10덕any(1)next/link(1)redux-toolkit(1)플래티넘(1)백준 10422 JS(1)유효성 검증(1)회고록(1)slidingwindow(1)github action(1)object.freeze(1)PlanetScale 설정(1)Husky(1)Junah(1)ReactJS GSAP(1)ECMA Script Module(1)소프트코딩(1)regex(1)cacheTime(1)promise.allSettled(1)di(1)pscale(1)비동기 병렬 처리(1)Spread연산자(1)useMemo(1)pnpm-lock.yaml(1)this(1)양방향 바인딩(1)상태관리 도구(1)memoizing(1)nvm(1)vercel deploy(1)비즈니스 로직(1)DeepCopy depth(1)오버 엔지니어링(1)useCallback(1)상수관리(1)그리디(1)협업(1)tailwindCSS(1)React18(1)ReactNode(1)refactor(1)Invalid options object(1)백준 1912 JS(1)C(1)트러블슈팅(1)백준 2559 JS(1)번들링(1)array(1)1927(1)관계형데이터베이스(1)atcoder(1)웰-노운(1)CJS(1)React Spring Boot(1)code splitting(1)pq(1)useLocation(1)ReactJS setInterval(1)cookie path(1)하드코딩(1)RDBMS(1)next js(1)lazy export(1)getQueryData(1)code splitting named export(1)test className(1)우선순위큐(1)SyntaxError: Cannot use import statement outside a module(1)webapi(1)(1)백준 10814 JS(1)우아한테크코스프리코스(1)module not found(1)Tailwind React(1)this bind(1)redux(1)closure(1)createPortal(1)allSettled(1)3차원 배열(1)OS(1)scope(1)Object.freeze depth(1)staletime(1)노마드코더(1)python constant(1)error415(1)npm i --no-shrink-wrap(1)ci(1)React.memo(1)참조(1)testcode(1)linebreak-style(1)NextJS GSAP(1)branch convention(1)refactoring(1)
post-thumbnail

React Hook Form 한계 극복하기

React Hook Form의 장점 ReactJS에서 사용자 입력을 관리하기 위해 React Hook Form을 사용한다. >- 사용자 입력을 관리하기 위한 다양한 도구를 제공 getter와 setter의 분리로 코드의 가독성 향상 유효성 검사를 JS로 관리하여 HTML 속성관련 보안 문제를 해결 React Hook Form의 한계 아쉽게도 사용자의 입력을 받는 Input 컴포넌트가 많아질수록 React Hook Form 역시 한계를 보여준다. 이는 validation 코드와 Input 컴포넌트 및 ErrorMessage를 렌더링하는 컴포넌트가 한 컴포넌트 내에 반복적으로 작성되어 가독성이 낮아지고 유지보수의 난이도가 올라갈 수 있다. 예시 코드 다음은 팀원님이 회원가입 기능을 구현하시고 보내주신 PR이다. 위 컴포넌트는 React Hook Form을 이용하여 구현한 회원가입이다. 유저에게

2023년 5월 1일
·
0개의 댓글
·