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

JSX未终止解析错误排查:我的fetch函数中JSX写法是否正确?

React项目解析错误:Unterminated JSX contents 排查与修复

解析错误核心说明

错误提示Line 10:78: Parsing error: Unterminated JSX contents. (10:78)表明代码中存在JSX元素未正确闭合、语法不完整的情况。结合你提供的代码,以下是具体问题排查与修复方案:

代码中的关键错误及修复

1. UserContext中fetch函数重名问题

你在UserProvider中定义的函数名为fetch,会覆盖全局fetch API,导致内部调用await fetch(...)时递归调用自身,无法正常发起请求。
修复:
将函数名改为login或其他名称:

const login = async (user_name, password) => {
  const response = await fetch('http://localhost:3500/users', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ user_name, password }),
  });
  const data = await response.json();
  if (response.ok) {
    setUser(data);
  } else {
    throw new Error(data.message);
  }
};

// 更新Provider的value
return (
  <UserContext.Provider value={{ user, login }}>
    {children}
  </UserContext.Provider>
);

2. LoginForm中navigate变量声明顺序错误

你在handleSubmit函数中调用navigate,但navigate变量在函数之后才声明,会导致运行时ReferenceError。
修复:
调整声明顺序:

const navigate = useNavigate();

const handleSubmit = (values, { setSubmitting}) => {
  fetch(values.user_name, values.password);
  setSubmitting(false);
  navigate('/MainGrid');
};

3. LoginForm中Formik与本地state冗余

你同时使用Formik的values和自己维护的user_name、password state,既冗余又会导致表单值不同步。
修复:
删除本地state,直接使用Formik提供的属性:

// 删除以下两行
// const [user_name, setUsername] = useState('');
// const [password, setPassword] = useState('');

// 修改input的value和onChange
<input 
  type="text" 
  className="form-control form-control" 
  name="user_name"
  value={values.user_name}
  onChange={handleChange}
  required
/>

<input
  type="password" 
  className="form-control form-control" 
  name="password"
  value={values.password} 
  onChange={handleChange}
  required
/>

4. UserContext导出方式错误

你使用export default { UserContext, UserProvider }导出,但LoginForm中用import {UserContext} from '../../Context/UserContext'导入,会导致解构失败(default export是对象,不是命名导出)。
修复:
改为命名导出:

// UserContext.js
export const UserContext = createContext();
export const UserProvider = ({ children }) => { ... };

// LoginForm.js
import { UserContext } from '../../Context/UserContext';

解析错误补充排查

如果上述修改后仍存在解析错误,建议检查:

  • 所有JSX标签是否严格闭合(推荐自闭合标签写法,如<img />而非<img></img>)
  • JSX中的表达式{}是否都正确闭合
  • 代码中是否存在中文括号、引号等非法字符
  • 编辑器行号对应位置的代码,是否因换行或缩进导致语法误判

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:05:21