쉬운 방법인 React를 사용하여 양식 작성( Typescript 포함)
16516 단어 reactformtypescriptjavascript
우리 모두는 거기에 있었다. 고통을 덜어주기 위해 formik 또는 redux 양식과 같은 여러 라이브러리를 시도했을 수 있습니다. 적절한 솔루션이기는 하지만 상용구 코드를 많이 사용하기 때문에 코드가 보기에 덜 예쁘고 초보자가 다루기 어렵습니다. 이러한 라이브러리의 견고함이 필요하지 않은 경우 몇 줄의 코드로 사용자 정의 양식 후크를 빌드할 수 있습니다.
이 튜토리얼에서는 후크를 사용한 최신 반응에 대한 지식이 필요합니다.
1단계: 빈 create-react-app 초기화
터미널을 열고 다음을 입력합니다.
npx create-react-app react-hook-form
2단계: 코드 편집기에서 프로젝트를 엽니다.
src 디렉토리로 이동하여 hooks라는 이름으로 새 디렉토리를 만듭니다. hooks 디렉토리 안에 useForm.ts 파일 생성(자바스크립트를 사용하는 경우 useForm.js)
3단계: 종속성 가져오기
사용자 정의 후크의 경우
useState
에서 "react"
후크를 가져옵니다.import { useState } from "react";
4단계: 기능적 구성요소 정의.
useForm
라는 기능 구성 요소를 만들고 양식의 초기 상태를 정의합니다. export
키워드를 추가하는 것을 잊지 마십시오.import { useState } from "react";
// useForm functional component
export const useForm = (callback: any, initialState = {}) => {
const [values, setValues] = useState(initialState);
}
여기서
initialState
는 이 후크를 사용하는 구성 요소에서 전달될 이메일, 비밀번호 등과 같이 양식이 가질 수 있는 다양한 값을 저장합니다. callback
는 사용자가 양식을 제출할 때 실행될 함수입니다.5단계: onChange 함수
onChange 함수는 사용자가 입력 필드에 무언가를 입력할 때마다 변경 이벤트를 처리하는 데 사용됩니다.
import { useState } from "react";
// useForm functional componen
export const useForm = (callback: any, initialState = {}) => {
const [values, setValues] = useState(initialState);
// onChange
const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {
setValues({ ...values, [event.target.name]:
event.target.value });
};
}
이 함수는 대상 이름으로 전달되는 이벤트의 대상 값을 설정합니다. 입력 요소의 이름을 "email"로 지정했다고 가정하면 이메일 필드에 입력된 값은 initialState의 이메일 속성으로 설정됩니다. 이를 위해서는 입력 필드에 지정된 이름과 동일한 이름을 가진 속성이 initialState에 필요합니다.
6단계: onSubmit 함수
onSubmit()
는 사용자가 제출 버튼을 클릭했을 때 전달된 callback()
함수를 실행합니다.import { useState } from "react";
// useForm functional componen
export const useForm = (callback: any, initialState = {}) => {
const [values, setValues] = useState(initialState);
// onChange
const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {
setValues({ ...values, [event.target.name]: event.target.value });
};
}
// onSubmit
const onSubmit = async (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
await callback(); // triggering the callback
};
callback()
는 일반적으로 데이터베이스에 로그인 데이터를 제출하는 것과 같은 비동기 함수이므로 await
키워드를 사용하고 onSubmit을 비동기 함수로 정의합니다.7단계: 후크의 기능과 데이터를 반환합니다.
import { useState } from "react";
// useForm functional componen
export const useForm = (callback: any, initialState = {}) => {
const [values, setValues] = useState(initialState);
// onChange
const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {
setValues({ ...values, [event.target.name]: event.target.value });
};
}
// onSubmit
const onSubmit = async (event: React.FormEvent<HTMLFormElement>) => {
event.preventDefault();
await callback(); // triggering the callback
};
// return values
return {
onChange,
onSubmit,
values,
};
이 후크에서 이 후크를 사용하는 구성 요소로
onChange
, onSubmit
및 values
를 반환합니다.8단계: 사용
src 디렉토리에 login.tsx 파일(자바스크립트의 경우 login.jsx)을 생성합니다.
다음 코드를 추가합니다.
import React, { useState } from "react";
import { useForm } from "./useForm";
function Login() {
// defining the initial state for the form
const initialState = {
email: "",
password: "",
};
// getting the event handlers from our custom hook
const { onChange, onSubmit, values } = useForm(
loginUserCallback,
initialState
);
// a submit function that will execute upon form submission
async function loginUserCallback() {
// send "values" to database
}
return (
// don't mind this ugly form :P
<form onSubmit={onSubmit}>
<div>
<input
name='email'
id='email'
type='email'
placeholder='Email'
onChange={onChange}
required
/>
<input
name='password'
id='password'
type='password'
placeholder='Password'
onChange={onChange}
required
/>
<button type='submit'>Login</button>
</div>
</form>
);
}
export default Login;
완료! 부피가 큰 양식 구성 요소가 없으며 사용자 정의 후크에 더 많은 이벤트 핸들러를 추가하여 더 강력하게 만듭니다. 쉽고 간단합니다.
인기를 얻고 있는 react-hook-form이라는 npm 패키지가 있습니다. 이 자습서는 해당 패키지에 대한 기본 통찰력입니다. 이 사용자 정의 후크에 양식 유효성 검사와 같은 더 많은 기능을 추가하고 반응을 사용하여 양식 작성을 더 나은 곳으로 만드십시오. :)
읽어 주셔서 감사합니다! 모든 피드백/질문을 주시면 감사하겠습니다.
Reference
이 문제에 관하여(쉬운 방법인 React를 사용하여 양식 작성( Typescript 포함)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/karan316/build-forms-using-react-the-easy-way-with-typescript-46bh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)