У нас есть несколько таких классов, и некоторые из них обращаются к this.form в нескольких своих функциях. В этом примере this.form необходим в handleClose (). Formik использует рендеринг реквизита (в этом примере нет), но я не знаю, является ли выполнение this.form = renderProps
в render()
чище, чем текущее ref={}
? Любые предложения по более чистому способу сохранения формы или это нормально?
class FieldRowEditor extends PureComponent {
// This contains the Formik ref
form = null;
handleClose = () => {
const { submitForm, values } = this.form;
submitForm(values);
};
handleSubmit = values => this.props.onClose(values);
render() {
const { children, classes, initialValues, onClose, validationSchema, ...props } = this.props;
return (
<Formik
initialValues={initialValues}
enableReinitialize
onSubmit={this.handleSubmit}
validationSchema={validationSchema}
ref={node => {
this.form = node;
}}
>
<Popover
className={classes.modal}
anchorOrigin={{
vertical: 'center',
horizontal: 'center'
}}
transformOrigin={{
vertical: 'center',
horizontal: 'center'
}}
onClose={this.handleClose}
{...props}
>
<div className={classes.editRow}>{children}</div>
</Popover>
</Formik>
);
}
}