ReactQuill - как обнулить тело после отправки формы?

Следующий код не использует ReactQuill и работает как положено. Форма имеет заголовок и тело. Данные хранятся и отправляются.

import React, { useState, useLayoutEffect } from "react";
import ReactDOM from "react-dom";
import ReactQuill from "react-quill";
import 'react-quill/dist/quill.snow.css'; // ES6


function App() {
  const [formState, setValues] = useState({
    workflowTitle: "",
    workflowContent: ""
  });

  const [formSubmit, setValuesFormSubmit] = useState({
    workflowTitleToDB: "",
    workflowContentToDB: ""
  });

  //______________________________________BEGIN handlers to cache form data

  function handleChange(event){
    setValues({
      ...formState,
      [event.target.name]: event.target.value
    });
  }


  //_________________________________________END handlers to cache form data





function createWorkflow(event){

    event.preventDefault()
    setValuesFormSubmit((prev)=>{
        return {...prev,

          workflowTitleToDB: formState.workflowTitle,
          workflowContentToDB: formState.workflowContent

        }
    });


    setValues((prev)=>{

      return {
        ...prev,
        workflowTitle: "",
        workflowContent: ""
        }

    });


  }


  useLayoutEffect(() => {
    console.log(formState);
    console.log(formSubmit);
  });


  return (

    <form onSubmit={createWorkflow}>
      <label>Title</label>
      <br />
      <input onChange={handleChange} name="workflowTitle" value={formState.workflowTitle} />
      <br />

      <textarea onChange={handleChange} name="workflowContent" value={formState.workflowContent} />  
      <br/>
      <input type="submit" value="Create Workflow"/>
    </form>

  );
}




export default App

Следующий код заменяет элемент textarea на ReactQuill. Добавлен пользовательский обработчик для ReactQuill. Все работает как положено, за исключением того, что тело ReactQuill не обнуляется. Я не уверен, почему, и я хочу знать, как это исправить.

Спасибо.

import React, { useState, useLayoutEffect } from "react";
import ReactDOM from "react-dom";
import ReactQuill from "react-quill";
import 'react-quill/dist/quill.snow.css'; // ES6


function App() {
  const [formState, setValues] = useState({
    workflowTitle: "",
    workflowContent: ""
  });

  const [formSubmit, setValuesFormSubmit] = useState({
    workflowTitleToDB: "",
    workflowContentToDB: ""
  });

    //______________________________________BEGIN handlers to cache form data

  function handleChange(event){
    setValues({
      ...formState,
      [event.target.name]: event.target.value
    });
  }


  function textEditorHandleChange(value){ 
    setValues({
      ...formState,
      "workflowContent": value
    });
  }

  //_________________________________________END handlers to cache form data





  function createWorkflow(event){


    event.preventDefault()
    setValuesFormSubmit((prev)=>{
        return {...prev,

          workflowTitleToDB: formState.workflowTitle,
          workflowContentToDB: formState.workflowContent

        }
    });



    setValues((prev)=>{

      return {
        ...prev,
        workflowTitle: "",
        workflowContent: ""
        }

     })


  }


  useLayoutEffect(() => {
    console.log(formState);
    console.log(formSubmit);
  });




  return (

    <form onSubmit={createWorkflow}>
      <label>Title</label>
      <br />
      <input onChange={handleChange} name="workflowTitle" value={formState.workflowTitle} />
      <br />
      <ReactQuill onChange={textEditorHandleChange} defaultValue={formState.workflowContent} theme="snow" />
      <br/>
      <input type="submit" value="Create Workflow"/>
    </form>

  );
}




export default App

0 ответов

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