reactjs - withFormik() : How to use handleChange

标签 reactjs formik

当前平台:NodeJS(最小)、客户端 React w/Redux、Formik,是的。

给出以下示例代码(不包括整个 React 组件代码,因为它与问题无关):

class RegisterPage extends React.Component {
    constructor(props) {
        super(props);
    }

    // (...)

    render () {
        <Form>
            <Field name="email" type="email" />
            <Field name="password" type="password" />
            <Field 
                name="myCheckbox" 
                type="checkbox"
                checked={this.props.values.myCheckbox}
                onChange={  ??????????  } />
        </Form>
    }
}

const handleFormSubmission = (values, { resetForm, setErrors, setSubmitting }) => {
    console.log(values);
};

const handleFormChange = (event) => {
    event.persist();
    console.log('changed');
};

const MyFormik = withFormik({
    mapPropsToValues ({ email, password, myCheckbox }) {
        return {
            email: email || '',
            password: password || '',
            myCheckbox: myCheckbox || false
       }
    },
    validationSchema: (...Yup schema here...),
    handleSubmit (values, bag) { return handleFormSubmission(values, bag); }
})(RegisterPage);

export default connect()(MyFormik);

...如何使用handleChange方法?我需要保留原始的(来自 Formik 的),同时添加处理该复选框更改的代码。有一些组件行为取决于该复选框的选中值。

请注意,我没有将 onChange 属性传递给电子邮件或密码,因为没有额外的行为可以对其进行编码。该复选框将具有特殊行为。

最佳答案

您可以为复选框声明一个处理程序,并使用它!使用 Formkit 的 native 处理程序和您的自定义处理程序。

class RegisterPage extends React.Component {
   constructor(props) {
      super(props);
   }
   // (...)
   handleCheckBox: (e) => {
       // do whatever you want to the value
   }
   render () {
       <Form>
           <Field name="email" type="email" />
           <Field name="password" type="password" />
           <Field 
               name="myCheckbox" 
               type="checkbox"
               checked={this.props.values.myCheckbox}
               onChange={(e) => {this.props.handleChange(e); this.handleCheckBox(e)}} />
       </Form>
   }
}

关于reactjs - withFormik() : How to use handleChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51159477/

相关文章:

reactjs - 如何在 Formik 上实现自定义 handleChange 函数?

reactjs - 使用 Formik 和 Yup 键入时验证用户名是否已存在

reactjs - useTranslation 在 react 钩子(Hook)中不起作用?

javascript - Nav 中的 React Bootstrap Checkbox -> NavItem 不会在点击时重新呈现

reactjs - Formik - 当一个字段发生变化时,如何自动控制另一个输入字段的值?

reactjs - JSX 属性中禁止使用 Lambda,因为它们会影响渲染性能

reactjs - 如何在TypeScript中使用useImperativeHandle输入React的forwardRef?

reactjs - 在 Material-UI 中将芯片/标签移到自动完成框之外

javascript - 不允许按需加载初始 block 。 block 名称 "main"已被入口点使用

javascript - 使用 Formik 进行异步/等待?