React Hooks 报错?一招解决useState问题

文章目录

问题

在使用import { useState } from "react";时报错:You're importing a component that needs useState. This React Hook only works in a Client Component. To fix, mark the file (or its parent) with the "use client" directive.

javascript 复制代码
import TodoFilter from "./components/TodoFilter";
import TodoList from "./components/TodoList";
import AddTodo from "./components/AddTodo";
import TodoItem from "./components/TodoItem";
import { useState } from "react";

export default function Home() {
  const [todos, setTodos] = useState([]);
  return (
    <div>
      <h1>TodoList</h1>
      <AddTodo />
      <TodoList />  
      <TodoFilter />
    </div>
  )
}

分析

这个错误是因为在 Next.js 13+App Router 中,默认情况下所有组件都是服务器组件(Server Components),而 useStateReact Hooks 只能在客户端组件(Client Components)中使用。

解决方案很简单,需要在文件顶部添加 "use client" 指令,将这个组件标记为客户端组件。应修改 page.tsx 文件为:

javascript 复制代码
"use client";

import TodoFilter from "./components/TodoFilter";
import TodoList from "./components/TodoList";
import AddTodo from "./components/AddTodo";
import TodoItem from "./components/TodoItem";
import { useState } from "react";

// ... 其余代码保持不变 ...
相关推荐
To_OC7 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
不好听6138 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端
恒拓高科WorkPlus8 小时前
企业级内网即时通讯建设模型:BeeWorks内网IM四层架构
前端
前端小李子9 小时前
前端环境变量裸奔?我用 EnvShield 给它穿了件防弹衣
前端
youtootech9 小时前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
小林ixn9 小时前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
醇氧10 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
窝子面11 小时前
手搓最简前后端协作-node
javascript·数据库
qetfw12 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具