React useState惰性初始化函数使用场景

一、从缓存或外部环境中恢复状态

场景:从 localStorage、sessionStorage、cookie、indexedDB、URL 参数 等来源读取初始值。

const [theme, setTheme] = useState(() => {
  return localStorage.getItem('theme') || 'light';
});
  • 避免每次渲染都访问存储,减少 I/O。

二、初始化大型数据结构

const [graph, setGraph] = useState(() => {
  return generateGraph(10000); // 生成 1 万节点
});
  • 仅首渲染生成一次,减少重复计算开销。

三、依赖外部环境变量(Node.js、全局配置等)

const [apiBase] = useState(() => {
  return process.env.NODE_ENV === 'production' ? '/prod' : '/dev';
});
  • 避免在每次渲染都读取全局状态。

四、根据 props 计算初始状态(但后续不随 props 改变)

场景:只在第一次根据 props 派生 state。

function UserForm({ defaultName }) {
  const [name, setName] = useState(() => defaultName.trim());
  // defaultName 后续变化不会影响 state
}

五、生成随机值 / 唯一 ID 初始化

const [sessionId] = useState(() => crypto.randomUUID());
  • 保证渲染期间该值稳定,不会每次都变。
Posted in React     

Leave a Reply

Your email address will not be published. Required fields are marked *