Как я могу сбросить форму в библиотеке реагирования rsuite?

Итак, я использую r-suite react library, и у меня проблема со сбросом формы

Когда я использую хук use-Ref для сброса формы, я получаю сообщение об ошибке, что form-Ref.current.reset() не является функцией

Я тоже пробую form-ref.current = null но почему-то не работает

так как я могу сбросить свою форму?

У меня проблема с формой сброса, и похоже, что библиотека реагирования r-suite не может позволить мне сбросить форму

import React, { useState, useRef } from "react";
import {
  Form,
  FormGroup,
  FormControl,
  Button,
  Container,
  FlexboxGrid,
} from "rsuite";
import { quotationModel } from "../validation/validation";

const AddFormjsx = ({ addQuotation }) => {
  const [val, setVal] = useState(undefined);

  const formRef = useRef();

  const handleVal = (e) => setVal(e);

  const handleSubmite = (e) => {
    console.info(e);
    if (e) {
      formRef.current.reset();
      addQuotation(val);
    }
  };

  return (
    <Container style = {{ marginTop: "2rem" }}>
      <FlexboxGrid justify = "center">
        <Form
          layout = "inline"
          model = {quotationModel}
          onChange = {handleVal}
          onSubmit = {handleSubmite}
          ef = {formRef}
        >
          <FormGroup>
            <FormControl
              name = "itemName"
              placeholder = "Item name"
              style = {{ width: 160 }}
            />
          </FormGroup>
          <FormGroup>
            <FormControl
              name = "itemPrice"
              placeholder = "Item price"
              style = {{ width: 160 }}
            />
          </FormGroup>
          <FormGroup>
            <FormControl
              name = "itemQuontity"
              placeholder = "Item Quontity"
              style = {{ width: 160 }}
            />
          </FormGroup>
          <Button type = "submite">Add</Button>
        </Form>
      </FlexboxGrid>
    </Container>
  );
};

export default AddFormjsx;
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Что такое компоненты React? Введение в компоненты | Типы компонентов
Что такое компоненты React? Введение в компоненты | Типы компонентов
Компонент - это независимый, многократно используемый фрагмент кода, который делит пользовательский интерфейс на более мелкие части. Например, если мы...
Введение в одну из самых важных концепций в React - функциональное программирование.
Введение в одну из самых важных концепций в React - функциональное программирование.
React разработан с использованием концепции функционального программирования, поэтому понимание функционального программирования важно для изучения...
Руководство спасателя React по созданию масштабируемых приложений
Руководство спасателя React по созданию масштабируемых приложений
А, React. Это одна из самых популярных библиотек JavaScript. Ее любят за гибкость, простоту использования и, будем честны, за то, что она позволяет...
0
0
675
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в этой строке: ef = {formRef} но должно быть ref = {formRef}

Замените: formRef.current.reset(); на formRef.current._reactInternals.child.stateNode.reset(), а также добавьте formRef.current.state.formValue = null для сброса внутреннего значения, если вы используете его с проверкой модели, если нет, он пропустит его

Кстати, это также не проблема, это всегда дает мне ошибку, подобную этой `formRef.current.reset не является функцией`

lemon69 18.12.2020 16:54

компонент «Форма» не имеет реквизита «ef». Что возвращает console.info(formRef.current)?

VasilyRogoja 18.12.2020 16:58

вот ссылка на изображение: postimg.cc/q6zxCF37

lemon69 18.12.2020 17:04
const handleSubmite = (e) => { console.info(e); if (e) { console.info(formRef.current); formRef.current.reset(); addQuotation(val); } }; что выведет console.info(formRef.current)
VasilyRogoja 18.12.2020 17:07

вот console.info из useRef: postimg.cc/75xM3b7c и о console.info из e он возвращается, правда, дело в том, что эта библиотека сильно модифицирует вещь, поэтому я не могу с ней справиться

lemon69 18.12.2020 17:12

Я очень ценю ваш ответ, но на самом деле он решает половину проблемы, чтобы сбросить отображаемое значение, но внутреннее значение все еще установлено, поэтому я использую « formRef.current.state.formValue = null », чтобы решить эту проблему, и я также изучаю ее и причину это не работает в первую очередь потому, что форма, вложенная в div с отдельным вводом, я действительно не знаю, почему они это сделали, но спасибо за ваш ответ, и вы прилагаете усилия, а также счастливого кодирования

lemon69 18.12.2020 18:21

Другие вопросы по теме