Более чистый способ сэкономить на ссылке? - PullRequest
0 голосов
/ 24 октября 2019

У нас есть несколько таких классов, и некоторые из них обращаются к 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>
    );
  }
}
...