{"id":83393,"date":"2024-11-11T17:55:56","date_gmt":"2024-11-11T14:25:56","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/the-best-react-forms-validation-libraries-1bgj\/"},"modified":"2024-11-11T17:55:56","modified_gmt":"2024-11-11T14:25:56","slug":"the-best-react-forms-validation-libraries-1bgj","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/the-best-react-forms-validation-libraries-1bgj\/","title":{"rendered":"\u0628\u0647\u062a\u0631\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc React Form \u2705\ud83e\udd47"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0641\u0631\u0645 \u0628\u062e\u0634 \u0645\u0647\u0645\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u0648\u0628 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0648\u0631\u0648\u062f\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0635\u062d\u06cc\u062d\u060c \u06a9\u0627\u0645\u0644 \u0648 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u062e\u0627\u0635 \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628 \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0645 \u0648 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u062f\u0631 React \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a:<\/p>\n<p>1. React Hook Form<\/p>\n<p>React Hook Form \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0645 \u0631\u0627 \u062f\u0631 React \u0628\u0627 \u0642\u0644\u0627\u0628 \u0647\u0627 \u0648 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f HTML \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0631\u0646\u062f\u0631\u0647\u0627\u06cc \u0645\u062c\u062f\u062f\u060c \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0648 \u0632\u0645\u0627\u0646 \u0646\u0635\u0628 \u0631\u0627 \u0628\u0647 \u062d\u062f\u0627\u0642\u0644 \u0645\u06cc \u0631\u0633\u0627\u0646\u062f \u0648 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0647\u062a\u0631\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0641\u0631\u0645 React \u06a9\u0647 \u0645\u0646 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 react \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0645 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648 \u0633\u0627\u062f\u06af\u06cc \u0622\u0646. \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0641\u06cc\u062f \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u062f \u0648 \u062f\u0631 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0628\u0627 Formik \u0648 Redux Form \u0628\u0647 \u06a9\u062f \u0632\u06cc\u0627\u062f\u06cc \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u062f.<\/p>\n<p>import { useForm, SubmitHandler } from &#8220;react-hook-form&#8221;<\/p>\n<p>type Inputs = {<br \/>\n  example: string<br \/>\n  exampleRequired: string<br \/>\n}<\/p>\n<p>export default function App() {<br \/>\n  const {<br \/>\n    register,<br \/>\n    handleSubmit,<br \/>\n    watch,<br \/>\n    formState: { errors },<br \/>\n  } = useForm&lt;Inputs&gt;()<br \/>\n  const onSubmit: SubmitHandler&lt;Inputs&gt; = (data) =&gt; console.log(data)<\/p>\n<p>  console.log(watch(&#8220;example&#8221;)) \/\/ watch input value by passing the name of it<\/p>\n<p>  return (<br \/>\n    \/* &#8220;handleSubmit&#8221; will validate your inputs before invoking &#8220;onSubmit&#8221; *\/<br \/>\n    &lt;form onSubmit={handleSubmit(onSubmit)}&gt;<br \/>\n      {\/* register your input into the hook by invoking the &#8220;register&#8221; function *\/}<br \/>\n      &lt;input defaultValue=&#8221;test&#8221; {&#8230;register(&#8220;example&#8221;)} \/&gt;<\/p>\n<p>      {\/* include validation with required or other standard HTML validation rules *\/}<br \/>\n      &lt;input {&#8230;register(&#8220;exampleRequired&#8221;, { required: true })} \/&gt;<br \/>\n      {\/* errors will return when field validation fails  *\/}<br \/>\n      {errors.exampleRequired &amp;&amp; &lt;span&gt;This field is required&lt;\/span&gt;}<\/p>\n<p>      &lt;input type=&#8221;submit&#8221; \/&gt;<br \/>\n    &lt;\/form&gt;<br \/>\n  )<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>2. \u0641\u0631\u0645\u06cc\u06a9<\/p>\n<p>Formik \u06af\u0631\u0648\u0647 \u06a9\u0648\u0686\u06a9\u06cc \u0627\u0632 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0647\u0627 \u0648 \u0647\u0648\u06a9 \u0647\u0627\u06cc React \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0641\u0631\u0645 \u0647\u0627 \u062f\u0631 React \u0648 React Native \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0628\u0647 \u0633\u0647 \u0628\u062e\u0634 \u0622\u0632\u0627\u0631\u062f\u0647\u0646\u062f\u0647 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>\u06af\u0631\u0641\u062a\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0631 \u062d\u0627\u0644\u062a \u0641\u0631\u0645 \u0648 \u062e\u0627\u0631\u062c \u0627\u0632 \u0622\u0646<br \/>\n\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0648 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u062e\u0637\u0627<br \/>\n\u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u0641\u0631\u0645<\/p>\n<p>import React from &#8216;react&#8217;;<br \/>\nimport { useFormik } from &#8216;formik&#8217;;<\/p>\n<p>const SignupForm = () =&gt; {<br \/>\n  \/\/ Pass the useFormik() hook initial form values and a submit function that will<br \/>\n  \/\/ be called when the form is submitted<br \/>\n  const formik = useFormik({<br \/>\n    initialValues: {<br \/>\n      email: &#8221;,<br \/>\n    },<br \/>\n    onSubmit: values =&gt; {<br \/>\n      alert(JSON.stringify(values, null, 2));<br \/>\n    },<br \/>\n  });<br \/>\n  return (<br \/>\n    &lt;form onSubmit={formik.handleSubmit}&gt;<br \/>\n      &lt;label htmlFor=&#8221;email&#8221;&gt;Email Address&lt;\/label&gt;<br \/>\n      &lt;input<br \/>\n        id=&#8221;email&#8221;<br \/>\n        name=&#8221;email&#8221;<br \/>\n        type=&#8221;email&#8221;<br \/>\n        onChange={formik.handleChange}<br \/>\n        value={formik.values.email}<br \/>\n      \/&gt;<\/p>\n<p>      &lt;button type=&#8221;submit&#8221;&gt;Submit&lt;\/button&gt;<br \/>\n    &lt;\/form&gt;<br \/>\n  );<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>3. React Final Form<\/p>\n<p>React Final Form \u06cc\u06a9 \u067e\u0648\u0634\u0634 \u0646\u0627\u0632\u06a9 React \u0628\u0631\u0627\u06cc Final Form \u0627\u0633\u062a\u060c \u06a9\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0645 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc Observer \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0646\u0647\u0627 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062f\u0627\u0631\u0646\u062f \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062d\u0627\u0644\u062a \u0641\u0631\u0645\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0641\u0631\u0645 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9\u060c \u062a\u0631\u0633\u06cc\u0645 \u0645\u062c\u062f\u062f \u06a9\u0644 \u0641\u0631\u0645 \u062f\u0631 \u0647\u0631 \u0641\u0634\u0627\u0631 \u06a9\u0644\u06cc\u062f \u0645\u0634\u06a9\u0644\u06cc \u0646\u062f\u0627\u0631\u062f. \u0627\u0645\u0627 \u0648\u0642\u062a\u06cc \u0641\u0631\u0645 \u0634\u0645\u0627 \u0631\u0634\u062f \u0645\u06cc \u06a9\u0646\u062f\u060c \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06a9\u0627\u0647\u0634 \u06cc\u0627\u0628\u062f.<\/p>\n<p>Final Form \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0644\u062a \u0641\u0631\u0645 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u0627 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627 \u0628\u0631\u0627\u06cc React \u0627\u0633\u062a. \u0628\u0647 \u06af\u0648\u0646\u0647 \u0627\u06cc \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627\u0698\u0648\u0644\u0627\u0631\u060c \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0635\u0641\u0631 \u0648 \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 \u0642\u0644\u0627\u0628 \u0628\u0627\u0634\u062f.<\/p>\n<p>import { Form, Field } from &#8216;react-final-form&#8217;<\/p>\n<p>const MyForm = () =&gt; (<br \/>\n  &lt;Form<br \/>\n    onSubmit={onSubmit}<br \/>\n    validate={validate}<br \/>\n    render={({ handleSubmit }) =&gt; (<br \/>\n      &lt;form onSubmit={handleSubmit}&gt;<br \/>\n        &lt;h2&gt;Simple Default Input&lt;\/h2&gt;<br \/>\n        &lt;div&gt;<br \/>\n          &lt;label&gt;First Name&lt;\/label&gt;<br \/>\n          &lt;Field name=&#8221;firstName&#8221; component=&#8221;input&#8221; placeholder=&#8221;First Name&#8221; \/&gt;<br \/>\n        &lt;\/div&gt;<\/p>\n<p>        &lt;h2&gt;An Arbitrary Reusable Input Component&lt;\/h2&gt;<br \/>\n        &lt;div&gt;<br \/>\n          &lt;label&gt;Interests&lt;\/label&gt;<br \/>\n          &lt;Field name=&#8221;interests&#8221; component={InterestPicker} \/&gt;<br \/>\n        &lt;\/div&gt;<\/p>\n<p>        &lt;h2&gt;Render Function&lt;\/h2&gt;<br \/>\n        &lt;Field<br \/>\n          name=&#8221;bio&#8221;<br \/>\n          render={({ input, meta }) =&gt; (<br \/>\n            &lt;div&gt;<br \/>\n              &lt;label&gt;Bio&lt;\/label&gt;<br \/>\n              &lt;textarea {&#8230;input} \/&gt;<br \/>\n              {meta.touched &amp;&amp; meta.error &amp;&amp; &lt;span&gt;{meta.error}&lt;\/span&gt;}<br \/>\n            &lt;\/div&gt;<br \/>\n          )}<br \/>\n        \/&gt;<\/p>\n<p>        &lt;h2&gt;Render Function as Children&lt;\/h2&gt;<br \/>\n        &lt;Field name=&#8221;phone&#8221;&gt;<br \/>\n          {({ input, meta }) =&gt; (<br \/>\n            &lt;div&gt;<br \/>\n              &lt;label&gt;Phone&lt;\/label&gt;<br \/>\n              &lt;input type=&#8221;text&#8221; {&#8230;input} placeholder=&#8221;Phone&#8221; \/&gt;<br \/>\n              {meta.touched &amp;&amp; meta.error &amp;&amp; &lt;span&gt;{meta.error}&lt;\/span&gt;}<br \/>\n            &lt;\/div&gt;<br \/>\n          )}<br \/>\n        &lt;\/Field&gt;<\/p>\n<p>        &lt;button type=&#8221;submit&#8221;&gt;Submit&lt;\/button&gt;<br \/>\n      &lt;\/form&gt;<br \/>\n    )}<br \/>\n  \/&gt;<br \/>\n)<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>4. @formily\/core<\/p>\n<p>Formily \u06cc\u06a9 \u062c\u0639\u0628\u0647 \u0627\u0628\u0632\u0627\u0631 \u0646\u0648\u0622\u0648\u0631\u0627\u0646\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u06cc\u062c\u0627\u062f \u0641\u0631\u0645 \u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0648 \u062f\u0631 \u0639\u06cc\u0646 \u062d\u0627\u0644 \u062a\u0636\u0645\u06cc\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0647\u06cc\u0646\u0647 \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\ud83d\uddbc \u0642\u0627\u0628\u0644 \u0637\u0631\u0627\u062d\u06cc\u060c \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u0641\u0631\u0645 \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0647\u0632\u06cc\u0646\u0647 \u06a9\u0645 \u0627\u0632 \u0637\u0631\u06cc\u0642 Form Builder \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\ud83d\ude80 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627\u060c \u0632\u0645\u06cc\u0646\u0647 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u0634\u0648\u0646\u062f\u060c \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0644 \u062f\u0631\u062e\u062a \u0631\u0627 \u0628\u0627\u0632\u0646\u0645\u0627\u06cc\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\ud83d\udca1 \u0627\u062c\u0632\u0627\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 Alibaba Fusion \u0648 Ant Design \u062a\u0636\u0645\u06cc\u0646 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u062e\u0627\u0631\u062c \u0627\u0632 \u062c\u0639\u0628\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\ud83c\udfa8 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 JSON \u0628\u0631\u0627\u06cc BackEnd \u0627\u0639\u0645\u0627\u0644 \u0634\u062f. JSchema \u0628\u0631\u0627\u06cc FrontEnd \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0627\u062f. \u062f\u0648 \u067e\u0627\u0631\u0627\u062f\u0627\u06cc\u0645 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062f.<\/p>\n<p>\ud83c\udfc5 \u0639\u0648\u0627\u0631\u0636 \u062c\u0627\u0646\u0628\u06cc \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u0634\u0648\u0646\u062f \u0648 \u067e\u06cc\u0648\u0646\u062f \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0641\u0631\u0645 \u0631\u0627 \u0622\u0633\u0627\u0646 \u062a\u0631 \u0627\u0632 \u0647\u0645\u06cc\u0634\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\ud83c\udf2f \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0637\u0631\u062d \u0628\u0646\u062f\u06cc \u0641\u0631\u0645 \u0631\u0627 \u0644\u063a\u0648 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>import React from &#8216;react&#8217;<br \/>\nimport { createForm } from &#8216;@formily\/core&#8217;<br \/>\nimport { FormProvider, FormConsumer, Field } from &#8216;@formily\/react&#8217;<br \/>\nimport {<br \/>\n  FormItem,<br \/>\n  FormLayout,<br \/>\n  Input,<br \/>\n  FormButtonGroup,<br \/>\n  Submit,<br \/>\n} from &#8216;@formily\/antd&#8217;<\/p>\n<p>const form = createForm()<\/p>\n<p>export default () =&gt; {<br \/>\n  return (<br \/>\n    &lt;FormProvider form={form}&gt;<br \/>\n      &lt;FormLayout layout=&#8221;vertical&#8221;&gt;<br \/>\n        &lt;Field<br \/>\n          name=&#8221;input&#8221;<br \/>\n          title=&#8221;Input box&#8221;<br \/>\n          required<br \/>\n          initialValue=&#8221;Hello world&#8221;<br \/>\n          decorator={[FormItem]}<br \/>\n          component={[Input]}<br \/>\n        \/&gt;<br \/>\n      &lt;\/FormLayout&gt;<br \/>\n      &lt;FormConsumer&gt;<br \/>\n        {() =&gt; (<br \/>\n          &lt;div<br \/>\n            style={{<br \/>\n              marginBottom: 20,<br \/>\n              padding: 5,<br \/>\n              border: &#8216;1px dashed #666&#8217;,<br \/>\n            }}<br \/>\n          &gt;<br \/>\n            Real-time response\uff1a{form.values.input}<br \/>\n          &lt;\/div&gt;<br \/>\n        )}<br \/>\n      &lt;\/FormConsumer&gt;<br \/>\n      &lt;FormButtonGroup&gt;<br \/>\n        &lt;Submit onSubmit={console.log}&gt;submit&lt;\/Submit&gt;<br \/>\n      &lt;\/FormButtonGroup&gt;<br \/>\n    &lt;\/FormProvider&gt;<br \/>\n  )<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<div data-article-id=\"2095816\" id=\"article-body\">\n<p>\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0641\u0631\u0645 \u0628\u062e\u0634 \u0645\u0647\u0645\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u0648\u0628 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0648\u0631\u0648\u062f\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0635\u062d\u06cc\u062d\u060c \u06a9\u0627\u0645\u0644 \u0648 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u062e\u0627\u0635 \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628 \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0645 \u0648 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u062f\u0631 React \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a:<\/p>\n<p><strong>1. React Hook Form<\/strong><\/p>\n<p>React Hook Form \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0645 \u0631\u0627 \u062f\u0631 React \u0628\u0627 \u0642\u0644\u0627\u0628 \u0647\u0627 \u0648 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f HTML \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0631\u0646\u062f\u0631\u0647\u0627\u06cc \u0645\u062c\u062f\u062f\u060c \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0648 \u0632\u0645\u0627\u0646 \u0646\u0635\u0628 \u0631\u0627 \u0628\u0647 \u062d\u062f\u0627\u0642\u0644 \u0645\u06cc \u0631\u0633\u0627\u0646\u062f \u0648 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0647\u062a\u0631\u06cc\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0641\u0631\u0645 React \u06a9\u0647 \u0645\u0646 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u0628\u0631\u0646\u0627\u0645\u0647 react \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0627\u0645 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0648 \u0633\u0627\u062f\u06af\u06cc \u0622\u0646. \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0645\u0641\u06cc\u062f \u0632\u06cc\u0627\u062f\u06cc \u062f\u0627\u0631\u062f \u0648 \u062f\u0631 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0628\u0627 Formik \u0648 Redux Form \u0628\u0647 \u06a9\u062f \u0632\u06cc\u0627\u062f\u06cc \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useForm<\/span><span class=\"p\">,<\/span> <span class=\"nx\">SubmitHandler<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">react-hook-form<\/span><span class=\"dl\">\"<\/span>\n\n\n<span class=\"nx\">type<\/span> <span class=\"nx\">Inputs<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">example<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"na\">exampleRequired<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">App<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">register<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">handleSubmit<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">watch<\/span><span class=\"p\">,<\/span>\n    <span class=\"na\">formState<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">errors<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useForm<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">Inputs<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">()<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">onSubmit<\/span><span class=\"p\">:<\/span> <span class=\"nx\">SubmitHandler<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">Inputs<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">data<\/span><span class=\"p\">)<\/span>\n\n  <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nf\">watch<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">example<\/span><span class=\"dl\">\"<\/span><span class=\"p\">))<\/span> <span class=\"c1\">\/\/ watch input value by passing the name of it<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"cm\">\/* \"handleSubmit\" will validate your inputs before invoking \"onSubmit\" *\/<\/span>\n    <span class=\"o\">&lt;<\/span><span class=\"nx\">form<\/span> <span class=\"nx\">onSubmit<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nf\">handleSubmit<\/span><span class=\"p\">(<\/span><span class=\"nx\">onSubmit<\/span><span class=\"p\">)}<\/span><span class=\"o\">&gt;<\/span>\n      <span class=\"p\">{<\/span><span class=\"cm\">\/* register your input into the hook by invoking the \"register\" function *\/<\/span><span class=\"p\">}<\/span>\n      <span class=\"o\">&lt;<\/span><span class=\"nx\">input<\/span> <span class=\"nx\">defaultValue<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">test<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">{...<\/span><span class=\"nf\">register<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">example<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)}<\/span> <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span>\n\n      <span class=\"p\">{<\/span><span class=\"cm\">\/* include validation with required or other standard HTML validation rules *\/<\/span><span class=\"p\">}<\/span>\n      <span class=\"o\">&lt;<\/span><span class=\"nx\">input<\/span> <span class=\"p\">{...<\/span><span class=\"nf\">register<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">exampleRequired<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span> <span class=\"na\">required<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span> <span class=\"p\">})}<\/span> <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span>      <span class=\"p\">{<\/span><span class=\"cm\">\/* errors will return when field validation fails  *\/<\/span><span class=\"p\">}<\/span>\n      <span class=\"p\">{<\/span><span class=\"nx\">errors<\/span><span class=\"p\">.<\/span><span class=\"nx\">exampleRequired<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"o\">&lt;<\/span><span class=\"nx\">span<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">This<\/span> <span class=\"nx\">field<\/span> <span class=\"nx\">is<\/span> <span class=\"nx\">required<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/span&gt;<\/span><span class=\"err\">}\n<\/span>\n\n      <span class=\"o\">&lt;<\/span><span class=\"nx\">input<\/span> <span class=\"nx\">type<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">submit<\/span><span class=\"dl\">\"<\/span> <span class=\"o\">\/&gt;<\/span>\n    <span class=\"o\">&lt;<\/span><span class=\"sr\">\/form<\/span><span class=\"err\">&gt;\n<\/span>  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>2. \u0641\u0631\u0645\u06cc\u06a9<\/strong><\/p>\n<p>Formik \u06af\u0631\u0648\u0647 \u06a9\u0648\u0686\u06a9\u06cc \u0627\u0632 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0647\u0627 \u0648 \u0647\u0648\u06a9 \u0647\u0627\u06cc React \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0641\u0631\u0645 \u0647\u0627 \u062f\u0631 React \u0648 React Native \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0628\u0647 \u0633\u0647 \u0628\u062e\u0634 \u0622\u0632\u0627\u0631\u062f\u0647\u0646\u062f\u0647 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<ol>\n<li>\u06af\u0631\u0641\u062a\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0631 \u062d\u0627\u0644\u062a \u0641\u0631\u0645 \u0648 \u062e\u0627\u0631\u062c \u0627\u0632 \u0622\u0646<\/li>\n<li>\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0648 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u062e\u0637\u0627<\/li>\n<li>\u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u0641\u0631\u0645\n<\/li>\n<\/ol>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">import<\/span> <span class=\"nx\">React<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useFormik<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">formik<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">SignupForm<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Pass the useFormik() hook initial form values and a submit function that will<\/span>\n  <span class=\"c1\">\/\/ be called when the form is submitted<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">formik<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useFormik<\/span><span class=\"p\">({<\/span>\n    <span class=\"na\">initialValues<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">email<\/span><span class=\"p\">:<\/span> <span class=\"dl\">''<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">},<\/span>\n    <span class=\"na\">onSubmit<\/span><span class=\"p\">:<\/span> <span class=\"nx\">values<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nf\">alert<\/span><span class=\"p\">(<\/span><span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nf\">stringify<\/span><span class=\"p\">(<\/span><span class=\"nx\">values<\/span><span class=\"p\">,<\/span> <span class=\"kc\">null<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">));<\/span>\n    <span class=\"p\">},<\/span>\n  <span class=\"p\">});<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"o\">&lt;<\/span><span class=\"nx\">form<\/span> <span class=\"nx\">onSubmit<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">handleSubmit<\/span><span class=\"p\">}<\/span><span class=\"o\">&gt;<\/span>\n      <span class=\"o\">&lt;<\/span><span class=\"nx\">label<\/span> <span class=\"nx\">htmlFor<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">email<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Email<\/span> <span class=\"nx\">Address<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/label<\/span><span class=\"err\">&gt;\n<\/span>      <span class=\"o\">&lt;<\/span><span class=\"nx\">input<\/span>\n        <span class=\"nx\">id<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">email<\/span><span class=\"dl\">\"<\/span>\n        <span class=\"nx\">name<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">email<\/span><span class=\"dl\">\"<\/span>\n        <span class=\"nx\">type<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">email<\/span><span class=\"dl\">\"<\/span>\n        <span class=\"nx\">onChange<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">handleChange<\/span><span class=\"p\">}<\/span>\n        <span class=\"nx\">value<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">values<\/span><span class=\"p\">.<\/span><span class=\"nx\">email<\/span><span class=\"p\">}<\/span>\n      <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span>\n      <span class=\"o\">&lt;<\/span><span class=\"nx\">button<\/span> <span class=\"nx\">type<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">submit<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Submit<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/button<\/span><span class=\"err\">&gt;\n<\/span>    <span class=\"o\">&lt;<\/span><span class=\"sr\">\/form<\/span><span class=\"err\">&gt;\n<\/span>  <span class=\"p\">);<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>3. React Final Form<\/strong><\/p>\n<p>React Final Form \u06cc\u06a9 \u067e\u0648\u0634\u0634 \u0646\u0627\u0632\u06a9 React \u0628\u0631\u0627\u06cc Final Form \u0627\u0633\u062a\u060c \u06a9\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0645 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc Observer \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0646\u0647\u0627 \u0645\u0624\u0644\u0641\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062f\u0627\u0631\u0646\u062f \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062d\u0627\u0644\u062a \u0641\u0631\u0645\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<blockquote>\n<p>\u0628\u0631\u0627\u06cc \u0641\u0631\u0645 \u0647\u0627\u06cc \u06a9\u0648\u0686\u06a9\u060c \u062a\u0631\u0633\u06cc\u0645 \u0645\u062c\u062f\u062f \u06a9\u0644 \u0641\u0631\u0645 \u062f\u0631 \u0647\u0631 \u0641\u0634\u0627\u0631 \u06a9\u0644\u06cc\u062f \u0645\u0634\u06a9\u0644\u06cc \u0646\u062f\u0627\u0631\u062f. \u0627\u0645\u0627 \u0648\u0642\u062a\u06cc \u0641\u0631\u0645 \u0634\u0645\u0627 \u0631\u0634\u062f \u0645\u06cc \u06a9\u0646\u062f\u060c \u0639\u0645\u0644\u06a9\u0631\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06a9\u0627\u0647\u0634 \u06cc\u0627\u0628\u062f.<\/p>\n<\/blockquote>\n<p>Final Form \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0644\u062a \u0641\u0631\u0645 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u0627 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627 \u0628\u0631\u0627\u06cc React \u0627\u0633\u062a. \u0628\u0647 \u06af\u0648\u0646\u0647 \u0627\u06cc \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627\u0698\u0648\u0644\u0627\u0631\u060c \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0635\u0641\u0631 \u0648 \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 \u0642\u0644\u0627\u0628 \u0628\u0627\u0634\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">Form<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Field<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react-final-form<\/span><span class=\"dl\">'<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">MyForm<\/span> <span class=\"o\">=<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n  <span class=\"o\">&lt;<\/span><span class=\"nx\">Form<\/span>\n    <span class=\"nx\">onSubmit<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">onSubmit<\/span><span class=\"p\">}<\/span>\n    <span class=\"nx\">validate<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">validate<\/span><span class=\"p\">}<\/span>\n    <span class=\"nx\">render<\/span><span class=\"o\">=<\/span><span class=\"p\">{({<\/span> <span class=\"nx\">handleSubmit<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n      <span class=\"o\">&lt;<\/span><span class=\"nx\">form<\/span> <span class=\"nx\">onSubmit<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">handleSubmit<\/span><span class=\"p\">}<\/span><span class=\"o\">&gt;<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"nx\">h2<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Simple<\/span> <span class=\"nx\">Default<\/span> <span class=\"nx\">Input<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/h2<\/span><span class=\"err\">&gt;\n<\/span>        <span class=\"o\">&lt;<\/span><span class=\"nx\">div<\/span><span class=\"o\">&gt;<\/span>\n          <span class=\"o\">&lt;<\/span><span class=\"nx\">label<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">First<\/span> <span class=\"nx\">Name<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/label<\/span><span class=\"err\">&gt;\n<\/span>          <span class=\"o\">&lt;<\/span><span class=\"nx\">Field<\/span> <span class=\"nx\">name<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">firstName<\/span><span class=\"dl\">\"<\/span> <span class=\"nx\">component<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">input<\/span><span class=\"dl\">\"<\/span> <span class=\"nx\">placeholder<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">First Name<\/span><span class=\"dl\">\"<\/span> <span class=\"o\">\/&gt;<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"sr\">\/div<\/span><span class=\"err\">&gt;\n<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"nx\">h2<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">An<\/span> <span class=\"nx\">Arbitrary<\/span> <span class=\"nx\">Reusable<\/span> <span class=\"nx\">Input<\/span> <span class=\"nx\">Component<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/h2<\/span><span class=\"err\">&gt;\n<\/span>        <span class=\"o\">&lt;<\/span><span class=\"nx\">div<\/span><span class=\"o\">&gt;<\/span>\n          <span class=\"o\">&lt;<\/span><span class=\"nx\">label<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Interests<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/label<\/span><span class=\"err\">&gt;\n<\/span>          <span class=\"o\">&lt;<\/span><span class=\"nx\">Field<\/span> <span class=\"nx\">name<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">interests<\/span><span class=\"dl\">\"<\/span> <span class=\"nx\">component<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">InterestPicker<\/span><span class=\"p\">}<\/span> <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span>        <span class=\"o\">&lt;<\/span><span class=\"sr\">\/div<\/span><span class=\"err\">&gt;\n<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"nx\">h2<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Render<\/span> <span class=\"nb\">Function<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/h2<\/span><span class=\"err\">&gt;\n<\/span>        <span class=\"o\">&lt;<\/span><span class=\"nx\">Field<\/span>\n          <span class=\"nx\">name<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">bio<\/span><span class=\"dl\">\"<\/span>\n          <span class=\"nx\">render<\/span><span class=\"o\">=<\/span><span class=\"p\">{({<\/span> <span class=\"nx\">input<\/span><span class=\"p\">,<\/span> <span class=\"nx\">meta<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n            <span class=\"o\">&lt;<\/span><span class=\"nx\">div<\/span><span class=\"o\">&gt;<\/span>\n              <span class=\"o\">&lt;<\/span><span class=\"nx\">label<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Bio<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/label<\/span><span class=\"err\">&gt;\n<\/span>              <span class=\"o\">&lt;<\/span><span class=\"nx\">textarea<\/span> <span class=\"p\">{...<\/span><span class=\"nx\">input<\/span><span class=\"p\">}<\/span> <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span>              <span class=\"p\">{<\/span><span class=\"nx\">meta<\/span><span class=\"p\">.<\/span><span class=\"nx\">touched<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">meta<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"o\">&lt;<\/span><span class=\"nx\">span<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">{<\/span><span class=\"nx\">meta<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span><span class=\"p\">}<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/span&gt;<\/span><span class=\"err\">}\n<\/span>            <span class=\"o\">&lt;<\/span><span class=\"sr\">\/div<\/span><span class=\"err\">&gt;\n<\/span>          <span class=\"p\">)}<\/span>\n        <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"nx\">h2<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Render<\/span> <span class=\"nb\">Function<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">Children<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/h2<\/span><span class=\"err\">&gt;\n<\/span>        <span class=\"o\">&lt;<\/span><span class=\"nx\">Field<\/span> <span class=\"nx\">name<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">phone<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span>\n          <span class=\"p\">{({<\/span> <span class=\"nx\">input<\/span><span class=\"p\">,<\/span> <span class=\"nx\">meta<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n            <span class=\"o\">&lt;<\/span><span class=\"nx\">div<\/span><span class=\"o\">&gt;<\/span>\n              <span class=\"o\">&lt;<\/span><span class=\"nx\">label<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Phone<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/label<\/span><span class=\"err\">&gt;\n<\/span>              <span class=\"o\">&lt;<\/span><span class=\"nx\">input<\/span> <span class=\"nx\">type<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">text<\/span><span class=\"dl\">\"<\/span> <span class=\"p\">{...<\/span><span class=\"nx\">input<\/span><span class=\"p\">}<\/span> <span class=\"nx\">placeholder<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Phone<\/span><span class=\"dl\">\"<\/span> <span class=\"o\">\/&gt;<\/span>\n              <span class=\"p\">{<\/span><span class=\"nx\">meta<\/span><span class=\"p\">.<\/span><span class=\"nx\">touched<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">meta<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"o\">&lt;<\/span><span class=\"nx\">span<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">{<\/span><span class=\"nx\">meta<\/span><span class=\"p\">.<\/span><span class=\"nx\">error<\/span><span class=\"p\">}<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/span&gt;<\/span><span class=\"err\">}\n<\/span>            <span class=\"o\">&lt;<\/span><span class=\"sr\">\/div<\/span><span class=\"err\">&gt;\n<\/span>          <span class=\"p\">)}<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"sr\">\/Field<\/span><span class=\"err\">&gt;\n<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"nx\">button<\/span> <span class=\"nx\">type<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">submit<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">Submit<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/button<\/span><span class=\"err\">&gt;\n<\/span>      <span class=\"o\">&lt;<\/span><span class=\"sr\">\/form<\/span><span class=\"err\">&gt;\n<\/span>    <span class=\"p\">)}<\/span>\n  <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>4. @formily\/core<\/strong><\/p>\n<p>Formily \u06cc\u06a9 \u062c\u0639\u0628\u0647 \u0627\u0628\u0632\u0627\u0631 \u0646\u0648\u0622\u0648\u0631\u0627\u0646\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u06cc\u062c\u0627\u062f \u0641\u0631\u0645 \u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0648 \u062f\u0631 \u0639\u06cc\u0646 \u062d\u0627\u0644 \u062a\u0636\u0645\u06cc\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0647\u06cc\u0646\u0647 \u062f\u0631 \u062f\u0633\u062a\u06af\u0627\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p><strong>\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627<\/strong><br \/>\ud83d\uddbc \u0642\u0627\u0628\u0644 \u0637\u0631\u0627\u062d\u06cc\u060c \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0633\u0631\u0639\u062a \u0641\u0631\u0645 \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0647\u0632\u06cc\u0646\u0647 \u06a9\u0645 \u0627\u0632 \u0637\u0631\u06cc\u0642 Form Builder \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\ud83d\ude80 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627\u060c \u0632\u0645\u06cc\u0646\u0647 \u0647\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u0634\u0648\u0646\u062f\u060c \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0644 \u062f\u0631\u062e\u062a \u0631\u0627 \u0628\u0627\u0632\u0646\u0645\u0627\u06cc\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\ud83d\udca1 \u0627\u062c\u0632\u0627\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 Alibaba Fusion \u0648 Ant Design \u062a\u0636\u0645\u06cc\u0646 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u062e\u0627\u0631\u062c \u0627\u0632 \u062c\u0639\u0628\u0647 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\ud83c\udfa8 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 JSON \u0628\u0631\u0627\u06cc BackEnd \u0627\u0639\u0645\u0627\u0644 \u0634\u062f. JSchema \u0628\u0631\u0627\u06cc FrontEnd \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0627\u062f. \u062f\u0648 \u067e\u0627\u0631\u0627\u062f\u0627\u06cc\u0645 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062f.<\/p>\n<p>\ud83c\udfc5 \u0639\u0648\u0627\u0631\u0636 \u062c\u0627\u0646\u0628\u06cc \u0628\u0647 \u0637\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u0634\u0648\u0646\u062f \u0648 \u067e\u06cc\u0648\u0646\u062f \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0641\u0631\u0645 \u0631\u0627 \u0622\u0633\u0627\u0646 \u062a\u0631 \u0627\u0632 \u0647\u0645\u06cc\u0634\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\ud83c\udf2f \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0637\u0631\u062d \u0628\u0646\u062f\u06cc \u0641\u0631\u0645 \u0631\u0627 \u0644\u063a\u0648 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">import<\/span> <span class=\"nx\">React<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">createForm<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@formily\/core<\/span><span class=\"dl\">'<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">FormProvider<\/span><span class=\"p\">,<\/span> <span class=\"nx\">FormConsumer<\/span><span class=\"p\">,<\/span> <span class=\"nx\">Field<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@formily\/react<\/span><span class=\"dl\">'<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">FormItem<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">FormLayout<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">Input<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">FormButtonGroup<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">Submit<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@formily\/antd<\/span><span class=\"dl\">'<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">form<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">createForm<\/span><span class=\"p\">()<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default <\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"o\">&lt;<\/span><span class=\"nx\">FormProvider<\/span> <span class=\"nx\">form<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">form<\/span><span class=\"p\">}<\/span><span class=\"o\">&gt;<\/span>\n      <span class=\"o\">&lt;<\/span><span class=\"nx\">FormLayout<\/span> <span class=\"nx\">layout<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">vertical<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"nx\">Field<\/span>\n          <span class=\"nx\">name<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">input<\/span><span class=\"dl\">\"<\/span>\n          <span class=\"nx\">title<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Input box<\/span><span class=\"dl\">\"<\/span>\n          <span class=\"nx\">required<\/span>\n          <span class=\"nx\">initialValue<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Hello world<\/span><span class=\"dl\">\"<\/span>\n          <span class=\"nx\">decorator<\/span><span class=\"o\">=<\/span><span class=\"p\">{[<\/span><span class=\"nx\">FormItem<\/span><span class=\"p\">]}<\/span>\n          <span class=\"nx\">component<\/span><span class=\"o\">=<\/span><span class=\"p\">{[<\/span><span class=\"nx\">Input<\/span><span class=\"p\">]}<\/span>\n        <span class=\"sr\">\/<\/span><span class=\"err\">&gt;\n<\/span>      <span class=\"o\">&lt;<\/span><span class=\"sr\">\/FormLayout<\/span><span class=\"err\">&gt;\n<\/span>      <span class=\"o\">&lt;<\/span><span class=\"nx\">FormConsumer<\/span><span class=\"o\">&gt;<\/span>\n        <span class=\"p\">{()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n          <span class=\"o\">&lt;<\/span><span class=\"nx\">div<\/span>\n            <span class=\"nx\">style<\/span><span class=\"o\">=<\/span><span class=\"p\">{{<\/span>\n              <span class=\"na\">marginBottom<\/span><span class=\"p\">:<\/span> <span class=\"mi\">20<\/span><span class=\"p\">,<\/span>\n              <span class=\"na\">padding<\/span><span class=\"p\">:<\/span> <span class=\"mi\">5<\/span><span class=\"p\">,<\/span>\n              <span class=\"na\">border<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">1px dashed #666<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n            <span class=\"p\">}}<\/span>\n          <span class=\"o\">&gt;<\/span>\n            <span class=\"nx\">Real<\/span><span class=\"o\">-<\/span><span class=\"nx\">time<\/span> <span class=\"nx\">response<\/span><span class=\"err\">\uff1a<\/span><span class=\"p\">{<\/span><span class=\"nx\">form<\/span><span class=\"p\">.<\/span><span class=\"nx\">values<\/span><span class=\"p\">.<\/span><span class=\"nx\">input<\/span><span class=\"p\">}<\/span>\n          <span class=\"o\">&lt;<\/span><span class=\"sr\">\/div<\/span><span class=\"err\">&gt;\n<\/span>        <span class=\"p\">)}<\/span>\n      <span class=\"o\">&lt;<\/span><span class=\"sr\">\/FormConsumer<\/span><span class=\"err\">&gt;\n<\/span>      <span class=\"o\">&lt;<\/span><span class=\"nx\">FormButtonGroup<\/span><span class=\"o\">&gt;<\/span>\n        <span class=\"o\">&lt;<\/span><span class=\"nx\">Submit<\/span> <span class=\"nx\">onSubmit<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nx\">log<\/span><span class=\"p\">}<\/span><span class=\"o\">&gt;<\/span><span class=\"nx\">submit<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/Submit<\/span><span class=\"err\">&gt;\n<\/span>      <span class=\"o\">&lt;<\/span><span class=\"sr\">\/FormButtonGroup<\/span><span class=\"err\">&gt;\n<\/span>    <span class=\"o\">&lt;<\/span><span class=\"sr\">\/FormProvider<\/span><span class=\"err\">&gt;\n<\/span>  <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0641\u0631\u0645 \u0628\u062e\u0634 \u0645\u0647\u0645\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u0648\u0628 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0648\u0631\u0648\u062f\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0635\u062d\u06cc\u062d\u060c \u06a9\u0627\u0645\u0644 \u0648 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u062e\u0627\u0635 \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u062d\u0628\u0648\u0628 \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0631\u0645 \u0648 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u062f\u0631 React \u062e\u0648\u0627\u0647\u06cc\u0645 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":83394,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-83393","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/83393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=83393"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/83393\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/83394"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=83393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=83393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=83393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}