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

React Form组件新增校验后报import/export仅允许出现在顶层错误

问题根因

  • 你的onSubmit回调函数遗漏了闭合的右大括号},导致后续所有代码都被识别为onSubmit函数的内部内容,最终export default Form语句出现在函数作用域内,违反了ES模块的语法规则,触发了对应报错。

修复方案

找到代码中setValid(false)所在的else分支结束位置,补全onSubmit函数的闭合大括号即可,修复后的完整代码如下:

const Form = ({
  valid,
  setValid,
  setStatus,
  inputText,
  setInputText,
  todos,
  setTodos
}) => {
  const inputTextHandler = (e) => {
    console.log(e.target.value);
    setInputText(e.target.value);
  };

  const onSubmit = (e) => {
    e.preventDefault();
    if(inputText){
      setTodos([
        ...todos,
        { text: inputText, completed: false, id: Math.random() * 1000 }
      ]);
      setInputText(""); 
    } else {
      setValid(false)
    }
  }; // 此处补全了onSubmit函数的闭合大括号
  
  const onStatusChange = (e) => {
    setStatus(e.target.value);
  };
  return (
    <form>
      <input
        value={inputText}
        onChange={inputTextHandler}
        type="text"
        className="todo-input"
      />

      {!valid && <span className="error">Please enter a todo</span>}
      <button onClick={onSubmit} className="todo-button" type="submit">
        <i className="fas fa-plus-square"></i>
      </button>
      <div className="select">
        <select onChange={onStatusChange} name="todos" className="filter-todo">
          <option value="all">All</option>
          <option value="completed">Completed</option>
          <option value="uncompleted">Uncompleted</option>
        </select>
      </div>
    </form>
  );
};

export default Form;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 16:54:04