AIGC PlaygroundAI 产品交互模式全景

理解与对话

多模态对话语音对话RAG 知识库视频理解

智能体

数据分析 Agent对话式表单 AgentAgent 编排工作台

内容创作

AI 写作图片生成AI 视频生成

实时与具身

数字人直播实时通信骨骼动画

Next.js 16 · Tailwind v4 · shadcn/ui

对话历史
React Hook 代码示例3月9日4 条
React 性能优化手段3月9日2 条
Markdown 渲染效果3月8日2 条

AI 对话

多模态 · SSE 流式 · Markdown · 代码高亮

4 条消息~576 tokens

请写一段 React Hook 的代码示例

15:58

好的,这是一个 React Hook 的示例:

import { useState, useCallback, useEffect } from 'react';

export function useCounter(initial = 0) {
  const [count, setCount] = useState(initial);
  const doubled = count * 2;

  const increment = useCallback(() => setCount(c => c + 1), []);
  const decrement = useCallback(() => setCount(c => c - 1), []);

  useEffect(() => {
    console.log('Counter mounted with value:', count);
  }, []);

  return { count, doubled, increment, decrement };
}

这个 Hook 封装了一个计数器逻辑,支持递增、递减,并提供了一个派生值 doubled。你可以继续问我关于这段代码的问题。

15:58

能详细解释一下这段代码吗?

15:59

好的,我来逐行解释这段代码:

  1. useState(initial) — 创建一个响应式状态 count,初始值由参数传入,默认为 0

  2. const doubled = count * 2 — 这是一个派生值,每次 count 变化时组件重渲染,doubled 会自动重新计算

  3. useCallback — 包裹 increment 和 decrement,确保函数引用稳定

  4. useEffect(fn, []) — 空依赖数组意味着只在挂载时执行一次

这种把状态逻辑抽成自定义 Hook 的模式叫 逻辑复用,是 React Hooks 最核心的设计理念。

15:59
···