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

TypeScript中React useState更新回调的prev参数类型如何指定?

类型指定解决方案

你此处prev的类型直接填写IhowitterMessage[]即可。

原因说明

你在调用useState初始化howitters状态时,已经通过泛型参数IhowitterMessage[]明确了该状态是由IhowitterMessage类型元素组成的数组。setter函数setHowitters接收的更新回调的入参prev代表当前的状态值,和状态本身的类型完全一致。

修改后代码

你只需要将问题行修改为如下内容即可:

setHowitters((prev: IhowitterMessage[]) => [howitterObject, ...prev]);

可选性能优化

你当前的写法是每遍历一条查询结果就更新一次状态,会触发多次组件重渲染,建议先收集所有查询结果再一次性更新:

const getHowitters = async () => {
  const dbHowitter = await dbService.collection("howitter").get();
  // 先收集所有查询到的消息对象
  const newHowitters: IhowitterMessage[] = [];
  dbHowitter.forEach((document) => {
    const howitterObject = {
      ...document.data(),
      id: document.id,
    } as IhowitterMessage;
    // 保持新数据在前的顺序
    newHowitters.unshift(howitterObject);
  });
  // 一次性更新状态
  setHowitters((prev) => [...newHowitters, ...prev]);
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:57:03