如何决定何时在 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])
我正在使用 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])