我正在开发一个聊天应用程序。目前,我的客户端组件向useEffect中的路由处理程序发出请求,每秒刷新留言板两次左右。参见示例:
"use client";
import { useEffect, useState } from "react";
import message from "./messageType";
export default function MessagesWindow() {
const [messagesList, setMessagesList] = useState<message[]>([]);
useEffect(() => {
const id = setInterval(() => {
fetch()
}, 500);
return () => clearInterval(id);
}, [messagesList]);
return (
<ul>
{messagesList.map((element: message) => {
return <li key={element._id}>{element.messageContent}</li>
});}
</ul>
);
}
这种方法肯定有效,但有人建议我应该使用服务器组件,以防止开销并消除对单独路由处理程序的需求。我还听说它减少了发送到客户端的Javascript。然而,如果所有的重新渲染都在服务器上完成,那么似乎必须下载整个页面。如果请求是偶尔的,这是有道理的,但我不确定这是否是最好的方法。然而,目前使用
useEffect
这似乎有点老套,所以我想知道哪种方法是最优化的。