Web Tech/library

Formik & Yup

걍가영 2024. 6. 10. 16:33

Formik

form 라이브러리로, Formik을 사용하면 마치 Context API를 사용하는 것처럼 form이 필요한 컴포넌트를 태그로 감싸주어 props drilling 없이 '컴포넌트 내에서 전역적으로 상태 관리'를 할 수 있다

  • Getting values in and out of form state: 값 상태 관리 
  • Validation and error messages: 유효성 검사 
  • Handling form submission: 제출 방식 제어

formik 장단점

장점

  • 폼 값을 유연성있게 다룰 수 있으며, state 방식과 context 방식이기 때문에 직관적이고 쉽게 데이터 흐름을 제어할 수 있다.
  • controlled component 방식이기 때문에 context api처럼 데이터를 다룰 수 있어 하나의 컴포넌트로 여러 곳에서 입력받은 데이터들을 부모 컴포넌트에서 전역으로 관리할 수 있다.
  • 코드를 간결하게 구현할 수 있으며, validation 처리하는 데 있어 매우 편리한 기능을 제공한다.

단점

  • react hook form 보다는 성능 측면에서 떨어짐(리렌더링)
  • 부분적인 watch 처리가 불가능

formik 사용 방법


Formik Props

  • initialValues : 폼 내에서 쓸 데이터의 기본값. 객체를 받으며, 각 key는 내부 input의 name과 대응된다. 
  • onSubmit : 폼에서 Submit 이벤트가 발생했을 때 실행할 핸들러 함수를 등록한다. 
    인자는 values(입력값 객체), actions(폼의 에러상태, 제출중인 상태(submitting), 폼 리셋 등의 추가조작) 2가지를 받음
  •  validatoinSchema : 유효성 검사 객체, yup을 사용해 schema로 처리하면 더 간단하게 처리 가능하다.

Render Props

  • values : <input> 등의 각 name과 이에 해당하는 value들의 값을 저장하는 객체. 각 name을 key로 값을 조회 가능하며, 위의initialValutes로 초기화. 
  • errors : validate 함수로 반환한 에러 정보를 저장하는 객체. 각 name을 key로 에러 메세지 조회 가능 (메세지가 있으면 에러) 
  • handleSubmit : 위의 onSubmit에 등록한 핸들러 함수. <form>의 onSubmit 이벤트 핸들러로 등록 
  • handleChange : 내부 엘리먼트의 값 변경을 연동하는 핸들러 함수. <input> 등의 onChange 이벤트 핸들러로 등록 
  • handleBlur : 내부 엘리먼트의 focusOut 동작과 연동하는 핸들러 함수(에러 핸들링). <input> 등의 onBlur 이벤트 핸들러로 등록 
  • touched : 사용자가 내부 엘리먼트와 인터렉션이 있었는지 여부를 저장하는 객체. 각 name을 key로 확인
  • isValid : 유효성 여부 확인,  true/false 반환

yup 라이브러리 


yup
객체 스키마 유효성 검사 라이브러리이다. 이를 통해 간편하게 데이터의 유효성을 확인하고 검증할 수 있다.
https://www.npmjs.com/package/yup/v/1.0.0-alpha.3#api