reactjs 如何在提交后使用react清除输入

b1payxdu  于 2023-01-12  发布在  React
关注(0)|答案(4)|浏览(182)

如何在使用按钮提交后清除此代码中的输入

export default function Form({addTask}) {
const [taskInp, setTaskInp] = useState("")
return (
    <div>
        <input
            type="text"
            placeholder="Write here"
            onChange={e=>{
                setTaskInp(e.target.value)
            }}
        />
        <button onClick={()=> {
            addTask(taskInp)
        }}>Add Task</button>
    </div>
)}

我很想知道推荐的方法是什么

yhqotfr8

yhqotfr81#

您可以在表单提交时重置表单元素。

const handleSubmit = (event)=>{
    event.preventDefault();
    addTask(taskInp);
    event.target.reset();
  };

  return (
    <form onSubmit={handleSubmit}>
        <input
            type="text"
            placeholder="Write here"
            onChange={e=>{
              setTaskInp(e.target.value);
            }}
        />
        <button type="submit">Add Task</button>
    </form>
  );
iovurdzv

iovurdzv2#

export default function Form({addTask}) {
const [taskInp, setTaskInp] = useState("")
return (
    <div>
        <input
            type="text"
            placeholder="Write here"
            value={taskInp}
            onChange={e=>{
                setTaskInp(e.target.value)
            }}
        />
        <button onClick={()=> {
            addTask(taskInp)
            setTaskInp("")
        }}>Add Task</button>
    </div>
)}
qnyhuwrf

qnyhuwrf3#

import React,{useRef} from "react";                               
                                                  
export default function Form(){                                     
 const formRef = useRef(null)
 handleForm = async(event)=>{
  //handle form logic
  ...
  formRef.current.reset();                 
 }
return (
  <>
   <form onSubmit={handleForm}>
    ....
   </form>                                            
  </>                                                 
)
}

这个解决方案基于msfers answer并针对 typescript 用户进行了改进,对我很有效。

iszxjhcz

iszxjhcz4#

通常我只会在onClick之后重置状态

<button onClick={()=> {
      addTask(taskInp),
      setTaskInp("")
  }}>Add Task</button>

相关问题