Formik의 기본 사용법과 MaterialUI에서의 사용 예
14054 단어 MaterialUIReactTypeScriptFormik
공식 문서가 역시 제일 상세하지만,
처음 사용하는 사람은 간단한 개요가있는 것이 좋을지도 모르기 때문에 기사로 둡니다.
Formik이란?
Formik은 React의 양식 처리를 단순화하는 라이브러리입니다.
Formik 공식 문서
아마도 세계에서 가장 많이 사용되는 React의 폼 라이브러리가 아닐까 생각합니다.
npm trends에서 다른 라이브러리와 비교해 보았습니다.
react-hook-form도 늘어나고 있습니다만, 다른 라이브러리와 꽤 차이가 열리고 있군요.
Formik은 이하 3점을 받아 줍니다.
양식 상태 관리에는 Redux-Form이라는 라이브러리도 있지만,
Formik이 더 간단합니다.
Redux를 사용하면 복잡해지기 쉽기 때문에,
Formik 쪽이 좋은 케이스가 많지 않을까 생각합니다.
밸리데이션에 대해서는, Yup라고 하는 라이브러리와 세트로 사용하는 것이 많습니다. 공식에서도 Yup 좋지 않은 것 말하고 있네요.
Formik 사용법 개요
우선 설치합시다.
npm install formik --save
// または
yarn add formik
사용법은 크게 나누어 3 종류 있습니다.
<Formik>
컴퍼넌트를 사용해 쓰는 법 Formik 구성 요소를 사용하여 작성하는 것이 간결합니다.
한편, materialUI등의 컴퍼넌트로 사용하는 경우에는 useFormik를 사용하는 방법이 있습니다.
이 기사에서는 useFormik을 사용한 기술 내용 중심으로,
다른 기사에서 Formik 컴퍼넌트를 사용한 방법을 써 갈까라고 생각합니다.
그건 그렇고, Formik 구성 요소는 useFormik을 내부적으로 사용합니다.
useFormik을 사용하는 방법
대체로 이하의 느낌이 될까 생각합니다.
코드로 써 보면 다음과 같은 느낌의 샘플에 울립니다.
import { useFormik } from 'formik';
import * as Yup from 'yup';
const SampleComponent = () => {
const formik = useFormik<Type>({
// フォームに初期値を設定
initialValues: {
email: '',
password: '',
},
// バリデーション
validationSchema: validationSchema,
// submit時のファンクション
onSubmit: values => {
// valuesはformの現在の値を返す。
alert(JSON.stringify(values, null, 2))
},
});
return (
<form onSubmit={formik.handleSubmit}>
<label htmlFor="email">Email Address</label>
<input
// idとnameをinitialValuesで設定したプロパティと合わせて設定
id="email"
name="email"
type="email"
onChange={formik.handleChange}
onBlur={formik?.handleBlur}
value={formik.values.email}
>
<label htmlFor="password">Password</label>
{formik.errors.email ? <div>{formik.errors.email}</div> : null}
<input
id="password"
name="password"
type="password"
onChange={formik.handleChange}
onBlur={formik?.handleBlur}
value={formik.values.password}
>
{formik.errors.password ? <div>{formik.errors.password}</div> : null}
<button type="submit">Submit</button>
</form>
)
}
const SignupSchema = Yup.object().shape({
email: Yup.string().email()
.required('Required'),
password: Yup.string()
.min(2, 'Too Short!')
.max(50, 'Too Long!')
.required('Required'),
email: Yup.string().email('Invalid email').required('Required'),
});
input의 설정 프로퍼티가 조금 많은 느낌이 드네요.
태그를 사용하는 방법이라면 더 간단하게 쓸 수 있습니다.
자주 사용하는 속성
그 밖에도 여러가지 있습니다만, 이하의 3개는 잘 사용했습니다.
// 特定のフォーム要素に値を設定。
formik.setFieldValue('email', '[email protected]')
// 複数のフォーム要素に値を設定。APIで取得した値を一括で設定したいときなどに利用
formik.setValues(values)
// フォームの値をリセット
formik.handleReset
MaterialUI에서 사용하는 방법
TextField와 RadioButton은 응용 프로그램에서 자주 사용되는 요소이므로,
컴포넌트 분할되어 사용해 주어지는 케이스가 많다고 생각합니다.
그런 경우 정도는 이런 느낌에 formik를 props로 전달해 주면 됩니다.
interface Props {
name: string;
formik?: ReturnType<typeof useFormik>;
}
const TextFieldParts: FC<Props> = ({name, formik}) => {
return <TextField
~~
value={formik?.values[name]}
onChange={formik?.handleChange}
onBlur={formik?.handleBlur}
error={Boolean(formik?.errors[name])}
helperText={formik?.errors[name]}
~~
/>
};
Reference
이 문제에 관하여(Formik의 기본 사용법과 MaterialUI에서의 사용 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koji-koji/items/09948eb3e448a1499ad8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)