Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在Formik窗体外部呈现Formik字段_Reactjs_Forms_Formik - Fatal编程技术网

Reactjs 在Formik窗体外部呈现Formik字段

Reactjs 在Formik窗体外部呈现Formik字段,reactjs,forms,formik,Reactjs,Forms,Formik,我们有自己的输入组件(如Checkbox,Textbox,甚至CurrencyInput组件) 我们现在正在使用。因此,我们替换了所有字段组件是将表单字段连接到Formik状态的组件。它在引擎盖下使用上下文Formik是上下文提供者,字段是上下文使用者字段与Formik绑定,除此之外没有任何用处。对于希望呈现有时连接到Formik,有时不连接到Formik的表单字段的用例,我将导出两个不同的组件: 与Formik无关的基本复选框组件。它应该只使用正常的输入 复选框组件周围的字段包装器 虽然字段组

我们有自己的输入组件(如
Checkbox
Textbox
,甚至
CurrencyInput
组件)


我们现在正在使用。因此,我们替换了所有
字段
组件是将表单字段连接到Formik状态的组件。它在引擎盖下使用上下文
Formik
是上下文提供者,
字段
是上下文使用者<代码>字段
Formik
绑定,除此之外没有任何用处。对于希望呈现有时连接到Formik,有时不连接到Formik的表单字段的用例,我将导出两个不同的组件:

  • 与Formik无关的基本复选框组件。它应该只使用正常的输入
  • 复选框组件周围的字段包装器
  • 虽然
    字段
    组件可以采用
    类型
    ,使其呈现相应的输入,但它呈现您想要的任何内容,并传递Formik为该字段管理的所有状态

    例如,您的Checkbox和CheckboxField组件可能如下所示:

    const Checkbox = (props) => {
      ...
      return (
        <div className={myClass1}>
          <input type='checkbox' checked={props.checked} onChange={props.onChange} />
          <label ...>{props.label}</label>
        </div>
      )
    };
    
    const CheckboxField = (props) => {
      return (
        <Field name={props.name}>
          {(field) => <Checkbox label={props.label} {...field} />}
        </Field>
      )
    }
    
    const复选框=(道具)=>{
    ...
    返回(
    {props.label}
    )
    };
    常量CheckboxField=(道具)=>{
    返回(
    {(字段)=>}
    )
    }
    
    现在,您可以使用两个呈现完全相同的组件,但其中一个用于Formik表单(
    CheckboxField
    ),另一个可以在任何地方使用(
    Checkbox

    const Checkbox = (props) => {
      ...
      return (
        <div className={myClass1}>
          <input type='checkbox' checked={props.checked} onChange={props.onChange} />
          <label ...>{props.label}</label>
        </div>
      )
    };
    
    const CheckboxField = (props) => {
      return (
        <Field name={props.name}>
          {(field) => <Checkbox label={props.label} {...field} />}
        </Field>
      )
    }