当前行为
<Formik
isInitialValid
initialValues={{ first_name: 'Test', email: 'test@mail.com' }}
validate={validate}
ref={node => (this.form = node)}
onSubmitCallback={this.onSubmitCallback}
render={formProps => {
const fieldProps = { formProps, margin: 'normal', fullWidth: true, };
const {values} = formProps;
return (
<Fragment>
<form noValidate>
<TextField
{...fieldProps}
required
autoFocus
value={values.first_name}
type="text"
name="first_name"
/>
<TextField
{...fieldProps}
name="last_name"
type="text"
/>
<TextField
{...fieldProps}
required
name="email"
type="email"
value={values.email}
/>
</form>
<Button onClick={this.onClick}>Login</Button>
</Fragment>
);
}}
/>
我正在尝试这个解决方案 https://github.com/jaredpalmer/formik/issues/73#issuecomment-317169770 但它总是返回我 Uncaught TypeError: _this.props.onSubmit is not a function
当我尝试 console.log(this.form)
有 submitForm
功能。
大佬们有什么解决办法吗?
- Formik 版本:最新 - React 版本:v16 - 操作系统:Mac OS
原文由 ssuhat 发布,翻译遵循 CC BY-SA 4.0 许可协议
只是对于任何想知道通过 React hooks 的解决方案是什么的人:
请记住,该解决方案仅适用于 Formik 组件 内 的组件,因为它使用上下文 API。如果出于某种原因您想从外部组件或实际使用 Formik 的组件手动提交,您实际上仍然可以使用
innerRef
。TLDR ;如果您提交的组件是
<Formik>
或withFormik()
组件的子组件,则此上下文答案就像一个魅力,否则,请使用innerRef
答案以下。