You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React待办列表提交后输入框值未清空,已尝试setInput('')

解决React待办列表提交后输入框不清空的问题

你的输入框未和state做双向绑定——仅通过onChange更新了state,但没把state值关联到输入框的value属性,导致调用setInput('')更新state后,输入框的显示内容无法同步变化。

只需给input元素添加value={input}属性,将其转为受控组件即可解决:

const Form = (props) => {

  const [input, setInput] = useState('');

  const handleChange = e => {
    setInput(e.target.value);
  }

  const handleSubmit = e => {
    e.preventDefault();

    const newTask = {
      id: uuidv4(),
      text: input,
      completed: false
    };

    props.onSubmit(newTask);
    setInput('');
  }

  return (
    <form
      className='task-form'
      >
      <input
        className='task-input'
        type='text'
        placeholder='Enter a task'
        name='text'
        onChange={handleChange}
        value={input} {/* 新增这行绑定 */}
        />
      <button className='task-btn' onClick={handleSubmit}>Add Task</button>
    </form>
  )
}

export default Form

React中,受控组件的表单元素值由state驱动,通过value属性将state与输入框绑定后,state的更新会直接反映到输入框的显示内容上,提交后调用setInput('')就能自动清空输入框。

内容的提问来源于stack exchange,提问作者AndresM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:10:44