首页 > 解决方案 > 从上一页键入脚本类型

问题描述

我不确定在这里指定哪种类型。

setHowitters 中的“HowitterObject”是数据,“...prev”是从 howitterObject 连续添加的数据。

 interface IhowitterMessage {
  message: string;
  createAt: number;
  id: string;
}

const Home = () => {
const [howitters, setHowitters] = useState<IhowitterMessage[]>([]);

  const getHowitters = async () => {
    const dbHowitter = await dbService.collection("howitter").get();
    dbHowitter.forEach((document) => {
      const howitterObject = {
        ...document.data(),
        id: document.id,
      };
      setHowitters((prev: ???) => [howitterObject, ...prev]); //What should I put in the "prev" type?
    });
  };

  useEffect(() => {
    getHowitters();
  }, []);

  return(
    <div>
       {howitters.map((howitter: IhowitterMessage) => (
          <div key={howitter.id}>
            <h4>{howitter.message}</h4>
          </div>
        ))}
    </div>
   );
};

如果你console.log(howitters),如下。

(3) [{...}, {...}, {...}]
    0: {message: "no", createAt: 1631367025550, id: "q2d9TTgh36mgFZwMQ5EA"}
    1: {createAt: 1631365463319, message: "Good", id: "nCABFp1v3dP73gIbckpp"}
    2: {message: "hey", createAt: 1631367021665, id: "dmNBa6C8NwhDQDYDOP36"}

标签: javascriptarraystypescripttypes

解决方案


它与您所在州的类型相似

因为prev是你以前的状态,howitters所以你也可以放在IhowitterMessage[]那里:

setHowitters((prev: IhowitterMessage[]) =>

推荐阅读