Formik과 반응 양식 상태를 관리하는 방법에 대한 가이드에 오신 것을 환영합니다. 양식 요소는 대응의 국가 중심의 접근 방식이있는 확률로 자신의 내부 상태로 가치를 유지합니다. 두 가지 작업을 함께 만들려면 각 필드에 제어 된 구성 요소를 사용하는 것과 같이 더 많은 관련 솔루션이 필요합니다.
그러나 데이터를 캡처하는 것보다 양식을 만드는 데 더 많은 측면이 있습니다. 서식이 올바른지 확인해야하며 필요한 모든 필드가 설정되어 있고 제출할 때 모든 것이 성공적으로 전송되었습니다. 이는 빨리 구축 할 수있는 복잡한 논리가 많이 발생합니다. 이것은 Formik이 도움이 될 수있는 곳입니다.
웹 디자인을 향상시키는 데 도움이되는 자세한 내용은 우리의 런 다운을 확인하십시오. 웹 디자인 도구 과 클라우드 스토리지 옵션. 처음부터 시작? 올바른 것을 골라라 웹 사이트 빌더 그리고 당신을 얻으십시오 웹 호스팅 우리의 둥근 서비스와 함께 서비스.
Formik. 이러한 문제를 처리하는 경량 라이브러리입니다. 제공된 구성 요소로 양식을 포장함으로써 우리는 무료 로이 동작을 많이합니다. 우리가 제공해야 할 모든 것은 우리 양식을 고유하게하는 것을 처리하는 코드입니다.
Formik이 할 수있는 것을 탐험 해보도록 돕기 위해, 우리는 작은 투표 응용 프로그램을 구축 할 것입니다. 사용자는 제공된 옵션 중 하나에 이름을 입력하고 투표 할 수 있습니다. 모든 것이 괜찮 으면 양식이 제출되지만 그렇지 않은 경우 사용자는 오류 메시지를받습니다.
시작하려면 명령 줄의 자습서 파일에서 '자습서'디렉토리를 엽니 다. 종속성을 설치하고 서버를 시작하십시오. 이 응용 프로그램은 Create-React-앱을 기반으로 구축되며 패키지를 포함하여 Formik 자체와 스타일링을 돕기 위해 몇 가지 다른 것들을 포함합니다.
& gt; NPM 설치
& gt; NPM 시작
개발 서버가 시작되고 응용 프로그램이 브라우저에서 열립니다. app.js 파일은 양식에 대한 컨테이너 구성 요소를 렌더링 할 전체 응용 프로그램을 제어합니다. 개방 src / app.js. 그을 수입하고 가져 오십시오 & lt; votecontainer. & gt; 구성 요소.
"./votecontainer"에서 VoteContainer 가져 오기;
그런 다음 응용 프로그램에 추가하십시오.
Formik 양식은 두 가지 방법으로 만들 수 있습니다. 그만큼 withformik. 고차원 구성 요소를 사용하면 기존 구성 요소를 랩핑하거나 & lt; formik & gt; 동일한 함수를 수행하는 렌더링 소품이있는 구성 요소는 우리가 사용할 것입니다.
votecontainer.js 안에는 양식에 대한 모든 논리를 보유 할 기능 구성 요소를 만듭니다. 이것은 A를 반환합니다 & lt; formik & gt; 우리의 양식을 렌더링하는 구성 요소. 나중에 추가 할 필드에 대한 시작 값을 제공합니다. 초기 값 소품.
"Formik"에서 {formik} 가져 오기;
"./vote"로부터 투표하십시오.
함수 votecontainer () {
반환 & lt; formik.
initialValues = {{name : "", 답 : ""}}
render = {props = & gt; & lt; {... ... props} / & gt;
그만큼 & lt; 투표 & gt; 구성 요소는 양식 구조를 보유합니다. Formik Logic을 분리함으로써 양식 구성 요소를 가능한 한 간단하게 유지할 수 있습니다.
vote.js에 투표 구성 요소를 만드는 & lt; 형태 & gt; Formik의 구성 요소. 버튼을 추가하여 양식을 정상으로 제출하십시오.
"Formik"에서 {form} 가져 오기;
함수 투표 () {
반환 (
& lt; 폼 클래스 이름 = "투표"& gt;
& lt; 입력 유형 = "제출"값 = "지금 투표"/ & gt;
& lt; / form & gt;
);
}
Formik은 각 분야의 변경 사항을 추적하고 양식이 제출되면 제공됩니다. 이 모든 이벤트는 양식 및 각 필드에서 방출 된 이벤트를 통해 수행합니다.
양식 수준에서는 두 가지 특정 이벤트가 있습니다 - 제출 및 재설정. 양식이 제출되면 우리는 재설정 이벤트가 상태를 지우면서 수표를 인수하고 수표를 수행해야합니다. 가져온 것 & lt; 형태 & gt; 구성 요소 이러한 이벤트를 Formik에 바인딩합니다.
첫 번째 필드를 추가 할 수 있습니다. 각 투표에는 이름이 수반되어야합니다. 즉, 텍스트 입력이 먼저 필요한 것을 의미합니다.
그만큼 & lt; field & gt; 구성 요소는 동일한 작업을 수행합니다 & lt; 형태 & gt; 전체 양식을 위해. 필드 상태를 표시하기 위해 필요한 이벤트와 소품 이름과 가치와 같은 소품을 묶습니다.
폼에 필드를 추가하고 레이블에 연결하십시오. 이러한 작업은 일반 HTML 양식에있을 것입니다.
"Formik"에서 가져 오기 {field};
& lt; label htmlfor = "name"& gt; name & lt; / label & gt;
& lt; 필드 autocomplete = "name"id = "name"name = "name"type = "text"/ gt;
우리는 모든 브라우저 이벤트와 함께 일할 필요가 없습니다. onsubmit. 이벤트는 우리를 위해 처리됩니다. 그러나 우리는 제출을 처리하기 위해 논리를 공급해야합니다. 콜백은 여전히 호출됩니다 onsubmit. 그러나 대신 양식 값을 직접받습니다. 또한 '가방'- 제출되는 동안 양식과 상호 작용하는 몇 가지 방법이 포함 된 개체를받습니다.
이 데이터가 일반적으로 서버로 헤드 되므로이 기능은 비동기 적 일 수도 있습니다. Formik에는 특별한 것입니다 발급 제출이 시작되면 자동으로 true로 설정됩니다. 비동기 기능을 사용하면 양식이 제출 될 때까지 기다릴 수 있으며 그대로 다시 그대로 설정할 수 있습니다.
votecontainer.js 안에 다시 제출 논리를 추가 할 수 있습니다. 함수를 만들고 그를 전달하십시오 & lt; formik & gt; 구성 요소. 이 예제에서는 서버에 보내지 않을 것이지만 네트워크 대기 시간을 시뮬레이트하기 위해 지연된 약속을 사용할 수 있습니다.
const onSubmit = Async (가치, 가방) = & gt; {
새로운 약속을 기다리고 있습니다 (= & gt; setTimeout (해결, 1000));
bag.SetSubmitting (false);
console.log ( "양식 제출", 값);
};
반환 & lt; formik [...] onSubmit = {OnSubmit} / & gt;
우리는 또한 양식 내에 제출 상태를 표시해야합니다. 이중 제출을 방지하려면 양식이 제출되는 동안 버튼을 비활성화 할 수 있습니다. Formik은 이것을 vote.js 내부의 형태로 전달합니다. 우리는이 제품을 당기고 버튼에 적용 할 수 있습니다.
기능 투표 ({_ _}}) {[...]}
& lt; 입력 비활성화 = {발급} type = "제출"값 = "지금 투표"/ & gt;
현재 형식을 입력하지 않고 양식을 제출할 수 있습니다. 이것이 필수 필드 인 경우,이를 사용자에게 플래그를 지정해야합니다.
뿌리 & lt; formik & gt; 또한 구성 요소는 유효성 검사를 수행하고 객체를 반환하는 함수 인 유효성 검사 소품을 취합니다. 각 키 값 쌍은 필드와 오류 메시지를 나타냅니다. 필드 에이 객체에 값이 없으면 유효한 것으로 간주됩니다. 양식은이 함수가 빈 오브젝트를 반환 할 때만 제출됩니다. 이 함수는 양식 값을 인수로받습니다. 필수 입력란의 경우, 값이 빈 문자열이 아닌 값만 확인하면됩니다.
votecontainer.js 안에 다시이 값을 확인하고 Formik에 연결하는 유효성 검사 콜백 함수를 만듭니다.
const 유효성 검사 = 값 = & gt; {
const 오류 = {};
if (values.name === "") {
errors.name = "이름이 필요합니다";
}
반환 오류;
};
반환 & lt; Formik [...] 유효성 검사 = {유효성 검사} / & gt;
이러한 오류는 다음 오류로 vote.js로 전달됩니다. 오류를 인라인으로 표시하려면 오류를 특정 양식 필드에 일치시켜야합니다.
기능 투표 ({발급, 오류, 터치}) {[...]}
& lt; div classname = "입력 그룹"& gt;
& lt; label htmlfor = "name"& gt; name & lt; / label & gt;
& lt; Div.
classname = {classnames ({
"유효성 검사 그룹": true,
오류 : !! errors.name & amp; & amp; touched.name.name.
})}
& gt;
& lt; 필드 autocomplete = "name"id = "name"name = "name"type = "text"/ & gt;
{!! !! errors.name & amp; & amp; Touched.name & amp; & amp; (
& lt; div classname = "오류 메시지"& gt; {errors.name} & lt; / div & gt;
)}}
& lt; / div & gt;
& lt; / div & gt;
Formik은 업데이트 할 때마다 양식을 검증합니다. 많은 필드가있는 양식은 첫 번째 변경 후 즉시 오류로 즉시 늪지립니다. 이를 피하기 위해 필드가 '터치'되었을 때만 오류를 표시합니다. 즉, 어떤 시점에서 상호 작용이 끼 었는 것을 의미합니다. 양식이 제출되면 Formik은 모든 필드를 터치하고 숨겨진 오류를 표시합니다.
이름 필드가 완료되면 답변으로 이동할 수 있습니다. 우리가 지금까지 사용한 접근 방식은 정기적 인 텍스트 입력에 잘 작동하지만 라디오 단추 그룹과 같은 동일한 필드 이름 아래에있는 여러 입력에 적합하지 않습니다.
우리가 여러 번 포함 할 수있는 동안 & lt; field & gt; 동일한 이름의 구성 요소, 우리는 가능한 한 우리 자신을 반복하지 않아야합니다. 대신, Formik은 사용자 정의 구성 요소를 & lt; field & gt로 전달할 수있게합니다. 그것은 그들을 하나로 관리 할 수 있습니다.
그만큼 & lt; answergroup & gt; 구성 요소는 텍스트 입력과 유사합니다. 표시 옵션이 포함 된 배열 인 옵션 소품이 필요합니다. 이들은 사용자가 답변을 선택할 수있는 스타일의 라디오 버튼으로 변환됩니다. 이 구성 요소를 vote.js에 포함 시키십시오. 사용하여 & lt; field & gt; 이 경우 엑스트라뿐만 아니라 이름 입력과 동일한 소품을 전달합니다. 옵션 일정한.
"./answergroup"에서 답변 그룹 가져 오기;
& lt; 필드 구성 요소 = {답변 그룹} 옵션 = {옵션} 이름 = "답변"/ & gt;
마지막으로, votecontainer.js의 유효성 검사 기능에 대한 답변이 필요합니다. 프로세스는 이름 필드와 동일합니다.
if (values.Answer === "") {
errors.Answer = "답변이 필요합니다";
유효성 검사 및 제출 논리를 분리하고 Formik을 사용하여 모든 것을 함께 스티치하도록 유지함으로써 각 조각을 작고 이해하기 쉽도록 할 수 있습니다.
이 콘텐츠는 원래 나타났습니다 그물 잡지 ...에 우리를 더 읽으십시오 여기 웹 디자인 기사 ...에
자세히보기 :
이 튜토리얼에서 우리는 자신의 조각에서 큰 규모의 아이디어를 전달하는 데 도움이되는 몇 가지 기본 원칙을 다룰 것입니다. 나는이 튜토리얼�..
소개가 거의 필요하지만 Affinity Designer는 Mac / Windows에서 사용할 수있는 벡터 아트 편집 도구의 제품군입니다. [삼] iPad. ...에 이 [삼] ..
이 마스터 클래스에서는 배우기 위해 따라야하는 기본 단계를 드러냅니다. 그림을 그리는 �..
오일로 페인팅은 예술을 만드는 흥미로운 방법입니다. 그러나 많은 사람들이 유성 페인트의 매체에 의해 협박을 할 수 있습니다. 실제로는 이상..