Метод setFieldsValue нельзя использовать при повторной инкапсуляции формы antD4 - PullRequest
0 голосов
/ 05 августа 2020

Метод setFieldsValue не может быть использован при повторной инкапсуляции формы antD4.

Ошибка:

this.formRef.current.setFieldsValue is not a function

Демонстрация по кодам и ящику

1 Ответ

0 голосов
/ 05 августа 2020

Метод setFieldsValue не может использоваться, когда форма antD4 повторно инкапсулирована.

когда вы создаете компонент и помещаете в него ant Form, вы не должны ожидать, что он будет вести себя точно так же, как Ant Form (поскольку вы расширяете React Component, а не Ant Form). вам нужно setFieldsValue, поэтому вы можете реализовать его следующим образом:

import React, { PureComponent } from "react";
import { Form as Component } from "antd";

class Form extends PureComponent {
  formRef = React.createRef();

  render() {
    return <Component {...this.props} ref={this.formRef} />;
  }
  setFieldsValue(v) {
    this.formRef.current.setFieldsValue(v);
  }
  getForm() {
    return this.formRef.current;
  }
}

Form.Item = Component.Item;
export default Form;

Таким образом, вы можете использовать его с:

    this.formRef.current.setFieldsValue({
      mobile: "110"
    });

Или:

    this.formRef.current.getForm().setFieldsValue({
      mobile: "110"
    });

Демо на codeandbox

...