如何决定何时在 React 中重新渲染

How to decide when to rerender in React

我正在使用 mern 堆栈创建一个小项目。在这个项目的首页,可以看到当前用户拥有的东西。问题是列表每时每刻都可能发生变化,因为其他用户可能会偶然发现该列表中的其他内容。所以,为了让它刷新,我把它放在 useEffect 挂钩中。现在的问题是我的服务器正在接收大量请求,而且总是同一个请求。我不知道是否可以设置一个在 x 秒后重新呈现的计时器,以使我的服务器的工作更轻松,或者在某些情况下是否有办法重新向服务器发出请求。这是管理请求的小代码:

    const [file, setFile] = useState([]);
    useEffect(() => {
        axios.post("http://127.0.0.1:5050/file/getfilesbycreator",{creator:localStorage.getItem('user')})
        .then(res => {
            setFile(res.data);
        })
        .catch(err => console.log(err))
    })

如果有人有任何建议,请告诉我。我读了一些关于重新渲染反应的东西,但我没有找到比计时器更好的方法,或者 similar.Thanks

作为 useEffect 的第二个参数,您必须指明要重新呈现的变量。 如果你想让 useEffect 只渲染一次,你必须把 [] 作为第二个参数:

useEffect(() => {
    axios.post("http://127.0.0.1:5050/file/getfilesbycreator",{creator:localStorage.getItem('user')})
    .then(res => {
        setFile(res.data);
    })
    .catch(err => console.log(err))
}, [])

如果您有一个可以更改的变量,例如 'file',只需将其添加到数组中即可:

useEffect(() => {
    axios.post("http://127.0.0.1:5050/file/getfilesbycreator",{creator:localStorage.getItem('user')})
    .then(res => {
        setFile(res.data);
    })
    .catch(err => console.log(err))
}, [file])