{"id":38235,"date":"2023-07-08T04:13:53","date_gmt":"2022-12-15T07:29:35","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/"},"modified":"2024-04-30T12:33:55","modified_gmt":"2024-04-30T04:33:55","slug":"%e5%ae%9e%e7%8e%b0react%e7%9a%84formik","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/","title":{"rendered":"\u5b9e\u73b0React\u7684Formik"},"content":{"rendered":"<h2>\u9996\u5148<\/h2>\n<p>\u6309\u7167\u6807\u9898\uff0c\u6211\u4eec\u5c06\u4f7f\u7528React\u6765\u5b9e\u73b0Formik\u3002<\/p>\n<h2>\u91cd\u8981\u7684\u4e8b\u9879<\/h2>\n<p>\u30fb\u8fdb\u884c\u9a8c\u8bc1\u68c0\u67e5\u3002<br \/>\n\u30fb\u5982\u679c\u5fc5\u586b\u9879\u672a\u586b\u5199\uff0c\u5219\u53d1\u9001\u6309\u94ae\u5c06\u88ab\u7981\u7528\u3002<br \/>\n\u30fb\u70b9\u51fb\u53d1\u9001\u6309\u94ae\u540e\uff0c\u5c06\u8fdb\u884cPOST\u901a\u4fe1\u3002<\/p>\n<h2>\u5b9e\u9645\u8f93\u51fa<\/h2>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d329b37434c4406c62c1d\/5-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2023-11-01 23.17.52.png\" \/><\/div>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code>\u251c\u2500\u2500 src\r\n\u2502   \u251c\u2500\u2500 App.tsx\r\n\u2502   \u251c\u2500\u2500 Form\r\n\u2502   \u2502   \u251c\u2500\u2500 Field.tsx\r\n\u2502   \u2502   \u251c\u2500\u2500 UserFormFileds.tsx\r\n\u2502   \u2502   \u251c\u2500\u2500 const.ts\r\n\u2502   \u2502   \u251c\u2500\u2500 hooks.ts\r\n\u2502   \u2502   \u251c\u2500\u2500 index.tsx\r\n\u2502   \u2502   \u251c\u2500\u2500 types.ts\r\n\u2502   \u2502   \u2514\u2500\u2500 validation.ts\r\n\u2502   \u251c\u2500\u2500 api\r\n\u2502   \u2502   \u2514\u2500\u2500 api.ts\r\n\u2502   \u251c\u2500\u2500 index.tsx\r\n\u2502   \u2514\u2500\u2500 logo.svg\r\n<\/code><\/pre>\n<h3>\u7f16\u7a0b<\/h3>\n<pre class=\"post-pre\"><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>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">UserForm<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/Form<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useMyFormik<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/Form\/hooks<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">UserFormFields<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/Form\/UserFormFileds<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"kd\">function<\/span> <span class=\"nf\">App<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"c1\">\/\/ Form\u60c5\u5831\u3092\u53d6\u5f97<\/span>\r\n  <span class=\"kd\">const<\/span> <span class=\"nx\">formik<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useMyFormik<\/span><span class=\"p\">();<\/span>\r\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\r\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\r\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">h1<\/span><span class=\"p\">&gt;<\/span>Formik\u30b5\u30f3\u30d7\u30eb<span class=\"p\">&lt;\/<\/span><span class=\"nt\">h1<\/span><span class=\"p\">&gt;<\/span>\r\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">UserForm<\/span> <span class=\"na\">formik<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">formik<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\r\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">UserFormFields<\/span> <span class=\"na\">formik<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">formik<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\r\n      <span class=\"p\">&lt;\/<\/span><span class=\"nc\">UserForm<\/span><span class=\"p\">&gt;<\/span>\r\n    <span class=\"p\">&lt;\/<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\r\n  <span class=\"p\">);<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"nx\">App<\/span><span class=\"p\">;<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">FormikProps<\/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>\r\n<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>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">UserFormValues<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/types<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">UserForm<\/span><span class=\"p\">:<\/span> <span class=\"nx\">React<\/span><span class=\"p\">.<\/span><span class=\"nx\">FC<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">UserFormProps<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">props<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">formik<\/span><span class=\"p\">,<\/span> <span class=\"nx\">children<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">props<\/span><span class=\"p\">;<\/span>\r\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\r\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">form<\/span> <span class=\"na\">onSubmit<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">handleSubmit<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\r\n      <span class=\"si\">{<\/span><span class=\"nx\">children<\/span><span class=\"si\">}<\/span>\r\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"submit\"<\/span> <span class=\"na\">disabled<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"o\">!<\/span><span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">isValid<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\r\n        \u9001\u4fe1\r\n      <span class=\"p\">&lt;\/<\/span><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\r\n    <span class=\"p\">&lt;\/<\/span><span class=\"nt\">form<\/span><span class=\"p\">&gt;<\/span>\r\n  <span class=\"p\">);<\/span>\r\n<span class=\"p\">};<\/span>\r\n\r\n<span class=\"kd\">type<\/span> <span class=\"nx\">UserFormProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"na\">formik<\/span><span class=\"p\">:<\/span> <span class=\"nx\">FormikProps<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">UserFormValues<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ UserFormValues\u306f\u5165\u3063\u3066\u304f\u308b\u578b\u3092\u5b9a\u7fa9<\/span>\r\n  <span class=\"nl\">children<\/span><span class=\"p\">:<\/span> <span class=\"nx\">React<\/span><span class=\"p\">.<\/span><span class=\"nx\">ReactNode<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">};<\/span>\r\n\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><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>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">FormikProps<\/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>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">UserFormValues<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/types<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/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\">.\/Field<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"kd\">type<\/span> <span class=\"nx\">UserFormFieldsProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"na\">formik<\/span><span class=\"p\">:<\/span> <span class=\"nx\">FormikProps<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">UserFormValues<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">};<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">UserFormFields<\/span><span class=\"p\">:<\/span> <span class=\"nx\">React<\/span><span class=\"p\">.<\/span><span class=\"nx\">FC<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">UserFormFieldsProps<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span> <span class=\"nx\">formik<\/span> <span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\r\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\r\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">Field<\/span> <span class=\"na\">formik<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">formik<\/span><span class=\"si\">}<\/span> <span class=\"na\">fieldName<\/span><span class=\"p\">=<\/span><span class=\"s\">\"name\"<\/span> <span class=\"na\">label<\/span><span class=\"p\">=<\/span><span class=\"s\">\"\u540d\u524d\"<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"text\"<\/span> <span class=\"p\">\/&gt;<\/span>\r\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">Field<\/span>\r\n        <span class=\"na\">formik<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">formik<\/span><span class=\"si\">}<\/span>\r\n        <span class=\"na\">fieldName<\/span><span class=\"p\">=<\/span><span class=\"s\">\"email\"<\/span>\r\n        <span class=\"na\">label<\/span><span class=\"p\">=<\/span><span class=\"s\">\"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\"<\/span>\r\n        <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"email\"<\/span>\r\n      <span class=\"p\">\/&gt;<\/span>\r\n    <span class=\"p\">&lt;\/<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\r\n  <span class=\"p\">);<\/span>\r\n<span class=\"p\">};<\/span>\r\n\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><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>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">FormikProps<\/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>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">UserFormValues<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/types<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"kd\">type<\/span> <span class=\"nx\">FieldProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"na\">formik<\/span><span class=\"p\">:<\/span> <span class=\"nx\">FormikProps<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">UserFormValues<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">;<\/span>\r\n  <span class=\"nl\">fieldName<\/span><span class=\"p\">:<\/span> <span class=\"kr\">keyof<\/span> <span class=\"nx\">UserFormValues<\/span><span class=\"p\">;<\/span> <span class=\"c1\">\/\/ keyof\u3067UserFormValues\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u540d\u3092\u53d6\u5f97<\/span>\r\n  <span class=\"nl\">label<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\r\n  <span class=\"nl\">type<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">};<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">Field<\/span><span class=\"p\">:<\/span> <span class=\"nx\">React<\/span><span class=\"p\">.<\/span><span class=\"nx\">FC<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">FieldProps<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span>\r\n  <span class=\"nx\">formik<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nx\">fieldName<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nx\">label<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"kd\">type<\/span><span class=\"p\">,<\/span>\r\n<span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"kd\">const<\/span> <span class=\"nx\">fieldError<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">errors<\/span><span class=\"p\">[<\/span><span class=\"nx\">fieldName<\/span><span class=\"p\">];<\/span>\r\n  <span class=\"kd\">const<\/span> <span class=\"nx\">fieldValue<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">values<\/span><span class=\"p\">[<\/span><span class=\"nx\">fieldName<\/span><span class=\"p\">];<\/span>\r\n  <span class=\"kd\">const<\/span> <span class=\"nx\">fieldTouched<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">touched<\/span><span class=\"p\">[<\/span><span class=\"nx\">fieldName<\/span><span class=\"p\">];<\/span>\r\n\r\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\r\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\r\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">label<\/span> <span class=\"na\">htmlFor<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">fieldName<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">label<\/span><span class=\"si\">}<\/span><span class=\"p\">&lt;\/<\/span><span class=\"nt\">label<\/span><span class=\"p\">&gt;<\/span>\r\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span>\r\n        <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"kd\">type<\/span><span class=\"si\">}<\/span>\r\n        <span class=\"na\">id<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">fieldName<\/span> <span class=\"k\">as<\/span> <span class=\"kr\">string<\/span><span class=\"si\">}<\/span>\r\n        <span class=\"na\">name<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">fieldName<\/span> <span class=\"k\">as<\/span> <span class=\"kr\">string<\/span><span class=\"si\">}<\/span>\r\n        <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">handleChange<\/span><span class=\"si\">}<\/span>\r\n        <span class=\"na\">onBlur<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">handleBlur<\/span><span class=\"si\">}<\/span>\r\n        <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">fieldValue<\/span><span class=\"si\">}<\/span>\r\n      <span class=\"p\">\/&gt;<\/span>\r\n      <span class=\"si\">{<\/span><span class=\"nx\">fieldTouched<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">fieldError<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">fieldError<\/span><span class=\"si\">}<\/span><span class=\"p\">&lt;\/<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">}<\/span>\r\n    <span class=\"p\">&lt;\/<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\r\n  <span class=\"p\">);<\/span>\r\n<span class=\"p\">};<\/span>\r\n\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><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>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useEffect<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">postApi<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">..\/api\/api<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">validationSchema<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/validation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">UserInitialValues<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">.\/const<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">useMyFormik<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"kd\">const<\/span> <span class=\"nx\">formik<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useFormik<\/span><span class=\"p\">({<\/span>\r\n    <span class=\"na\">initialValues<\/span><span class=\"p\">:<\/span> <span class=\"nx\">UserInitialValues<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"nx\">validationSchema<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"na\">onSubmit<\/span><span class=\"p\">:<\/span> <span class=\"k\">async <\/span><span class=\"p\">(<\/span><span class=\"nx\">values<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"kd\">const<\/span> <span class=\"nx\">response<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">postApi<\/span><span class=\"p\">({<\/span>\r\n          <span class=\"na\">title<\/span><span class=\"p\">:<\/span> <span class=\"nx\">values<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ \u540d\u524d\u3092\u30bf\u30a4\u30c8\u30eb\u3068\u3057\u3066\u4f7f\u7528<\/span>\r\n          <span class=\"na\">body<\/span><span class=\"p\">:<\/span> <span class=\"nx\">values<\/span><span class=\"p\">.<\/span><span class=\"nx\">email<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u672c\u6587\u3068\u3057\u3066\u4f7f\u7528<\/span>\r\n          <span class=\"na\">userId<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"c1\">\/\/ \u30e6\u30fc\u30b6\u30fcID\u3092\u9069\u5207\u306b\u8a2d\u5b9a<\/span>\r\n        <span class=\"p\">});<\/span>\r\n        <span class=\"c1\">\/\/ \u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u51fa\u529b<\/span>\r\n        <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">API\u30ec\u30b9\u30dd\u30f3\u30b9:<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">response<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">);<\/span>\r\n      <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">error<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">API\u30a8\u30e9\u30fc:<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n  <span class=\"p\">});<\/span>\r\n\r\n  <span class=\"nf\">useEffect<\/span><span class=\"p\">(()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nf\">validateForm<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ \u30d5\u30a9\u30fc\u30e0\u304c\u6700\u521d\u306b\u30ed\u30fc\u30c9\u3055\u308c\u305f\u3068\u304d\u306b\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u884c<\/span>\r\n  <span class=\"p\">},<\/span> <span class=\"p\">[]);<\/span> <span class=\"c1\">\/\/ \u7a7a\u306e\u4f9d\u5b58\u30ea\u30b9\u30c8\u3092\u6307\u5b9a\u3057\u3066\u4e00\u5ea6\u3060\u3051\u5b9f\u884c\u3055\u308c\u308b\u3088\u3046\u306b<\/span>\r\n\r\n  <span class=\"k\">return<\/span> <span class=\"nx\">formik<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">UserInitialValues<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">''<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"na\">email<\/span><span class=\"p\">:<\/span> <span class=\"dl\">''<\/span><span class=\"p\">,<\/span>\r\n<span class=\"p\">};<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"k\">export<\/span> <span class=\"kd\">type<\/span> <span class=\"nx\">UserFormValues<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\r\n    <span class=\"nl\">email<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">};<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"k\">import<\/span> <span class=\"o\">*<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">Yup<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">yup<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">validationSchema<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">Yup<\/span><span class=\"p\">.<\/span><span class=\"nf\">object<\/span><span class=\"p\">({<\/span>\r\n  <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Yup<\/span><span class=\"p\">.<\/span><span class=\"nf\">string<\/span><span class=\"p\">().<\/span><span class=\"nf\">required<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\u540d\u524d\u306f\u5fc5\u9808\u9805\u76ee\u3067\u3059<\/span><span class=\"dl\">'<\/span><span class=\"p\">),<\/span>\r\n  <span class=\"na\">email<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Yup<\/span><span class=\"p\">.<\/span><span class=\"nf\">string<\/span><span class=\"p\">()<\/span>\r\n    <span class=\"p\">.<\/span><span class=\"nf\">email<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\u6709\u52b9\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"p\">.<\/span><span class=\"nf\">required<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u5fc5\u9808\u9805\u76ee\u3067\u3059<\/span><span class=\"dl\">'<\/span><span class=\"p\">),<\/span>\r\n<span class=\"p\">});<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"k\">import<\/span> <span class=\"nx\">axios<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">axios<\/span><span class=\"dl\">\"<\/span>\r\n\r\n\r\n<span class=\"kd\">const<\/span> <span class=\"nx\">apiUrl<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">https:\/\/jsonplaceholder.typicode.com\/posts<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\r\n\r\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">postApi<\/span> <span class=\"o\">=<\/span> <span class=\"k\">async <\/span><span class=\"p\">(<\/span><span class=\"nx\">payload<\/span><span class=\"p\">:<\/span><span class=\"kr\">any<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"kd\">const<\/span> <span class=\"nx\">response<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">axios<\/span><span class=\"p\">.<\/span><span class=\"nf\">post<\/span><span class=\"p\">(<\/span><span class=\"nx\">apiUrl<\/span><span class=\"p\">,<\/span> <span class=\"nx\">payload<\/span><span class=\"p\">);<\/span>\r\n    <span class=\"k\">return<\/span> <span class=\"nx\">response<\/span><span class=\"p\">;<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>Formik\u4e2d\u7684\u56f0\u96be\u4e4b\u4e00\u662fuseFormik\u3002\u6211\u4e0d\u77e5\u9053onSubmit\u5230\u5e95\u5728\u4ec0\u4e48\u65f6\u5019\u88ab\u89e6\u53d1\u3002\u867d\u7136\u5b83\u5728\u63d0\u4ea4\u65f6\u88ab\u89e6\u53d1\uff0c\u4f46\u5982\u679c\u6ca1\u6709\u5b9e\u65bd\u524d\u7aef\u90e8\u5206\uff0c\u6211\u4e0d\u77e5\u9053\u5b83\u5728\u54ea\u91cc\u88ab\u4f7f\u7528\u3002\u5728\u4e0a\u9762\u7684\u793a\u4f8b\u5b9e\u73b0\u4e2d\uff0c\u5b83\u5728\u63d0\u4ea4\u65f6\u88ab\u89e6\u53d1\u3002<\/p>\n<pre class=\"post-pre\"><code>      <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span> <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"submit\"<\/span> <span class=\"na\">disabled<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"o\">!<\/span><span class=\"nx\">formik<\/span><span class=\"p\">.<\/span><span class=\"nx\">isValid<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\r\n        \u9001\u4fe1\r\n      <span class=\"p\">&lt;\/<\/span><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u6309\u7167\u6807\u9898\uff0c\u6211\u4eec\u5c06\u4f7f\u7528React\u6765\u5b9e\u73b0Formik\u3002 \u91cd\u8981\u7684\u4e8b\u9879 \u30fb\u8fdb\u884c\u9a8c\u8bc1\u68c0\u67e5\u3002 \u30fb\u5982\u679c\u5fc5\u586b\u9879\u672a\u586b\u5199\uff0c\u5219 [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-38235","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5b9e\u73b0React\u7684Formik - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5b9e\u73b0react\u7684formik\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5b9e\u73b0React\u7684Formik\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u6309\u7167\u6807\u9898\uff0c\u6211\u4eec\u5c06\u4f7f\u7528React\u6765\u5b9e\u73b0Formik\u3002 \u91cd\u8981\u7684\u4e8b\u9879 \u30fb\u8fdb\u884c\u9a8c\u8bc1\u68c0\u67e5\u3002 \u30fb\u5982\u679c\u5fc5\u586b\u9879\u672a\u586b\u5199\uff0c\u5219 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5b9e\u73b0react\u7684formik\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-15T07:29:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T04:33:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d329b37434c4406c62c1d\/5-0.png\" \/>\n<meta name=\"author\" content=\"\u5b87, \u534e\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u5b87, \u534e\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/\",\"name\":\"\u5b9e\u73b0React\u7684Formik - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-12-15T07:29:35+00:00\",\"dateModified\":\"2024-04-30T04:33:55+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5b9e\u73b0React\u7684Formik\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\",\"name\":\"\u5b87, \u534e\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"caption\":\"\u5b87, \u534e\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5b9e\u73b0React\u7684Formik - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5b9e\u73b0react\u7684formik\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5b9e\u73b0React\u7684Formik","og_description":"\u9996\u5148 \u6309\u7167\u6807\u9898\uff0c\u6211\u4eec\u5c06\u4f7f\u7528React\u6765\u5b9e\u73b0Formik\u3002 \u91cd\u8981\u7684\u4e8b\u9879 \u30fb\u8fdb\u884c\u9a8c\u8bc1\u68c0\u67e5\u3002 \u30fb\u5982\u679c\u5fc5\u586b\u9879\u672a\u586b\u5199\uff0c\u5219 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5b9e\u73b0react\u7684formik\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-12-15T07:29:35+00:00","article_modified_time":"2024-04-30T04:33:55+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d329b37434c4406c62c1d\/5-0.png"}],"author":"\u5b87, \u534e","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u5b87, \u534e","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"2 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/","name":"\u5b9e\u73b0React\u7684Formik - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-12-15T07:29:35+00:00","dateModified":"2024-04-30T04:33:55+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5b9e\u73b0React\u7684Formik"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458","name":"\u5b87, \u534e","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","caption":"\u5b87, \u534e"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ae%9e%e7%8e%b0react%e7%9a%84formik\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/38235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=38235"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/38235\/revisions"}],"predecessor-version":[{"id":91936,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/38235\/revisions\/91936"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=38235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=38235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=38235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}