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

React函数组件出现Unexpected Token解析错误,请求排查问题原因

你的React组件问题拆解

嘿,我来帮你梳理下代码里的错误,你遇到的这个语法报错和逻辑问题其实都是函数式组件里的常见坑:

1. useEffect的用法完全错了

useEffect是用来处理副作用(比如数据请求、订阅)的钩子,它的回调函数要么返回一个清理函数(比如取消订阅),要么啥都不返回。你现在把组件要渲染的JSX放在useEffect的返回里,这完全不符合它的设计——组件的UI输出应该直接在Tasks函数的末尾返回,不是塞到副作用钩子里面。

2. renderList函数的定义语法错误

你用了类组件里的方法写法renderList(tasks) { ... },但Tasks是个箭头函数式组件,在函数内部定义子函数得用函数表达式或者箭头函数的方式,比如:

const renderList = (tasks) => {
  console.log(tasks)
  return <li>dd</li>
}

原来的写法会被JS解析器当成非法语法,这就是你看到Unexpected token, expected ";"报错的直接原因。

3. 组件本身没有返回UI内容

因为你把本该组件返回的JSX放到了useEffect里,导致整个Tasks组件没有任何输出,就算语法没问题,页面上也看不到东西。

修复后的完整代码

import React, { useState, useEffect } from 'react';
import axios from 'axios';

const Tasks = () => {
  const [tasks, setTasks] = useState([]);

  // 用箭头函数定义内部渲染函数
  const renderList = (tasks) => {
    console.log(tasks);
    // 如果是真实场景,建议遍历tasks生成列表项,记得加key:
    // return tasks.map(task => <li key={task.id}>{task.title}</li>);
    return <li>dd</li>;
  };

  useEffect(() => {
    // 这里只处理数据请求的副作用
    axios.get('/tasks').then(response => setTasks(response.data));
  }, []);

  // 组件的UI在这里返回
  return (
    <ul>
      {renderList(tasks)}
    </ul>
  );
};

export default Tasks;

小补充:如果之后要遍历tasks生成列表,记得给每个<li>加上唯一的key属性,这是React列表渲染的硬性要求,能避免不必要的重渲染问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:57:40