Estoy creando un pequeño proyecto con la pila Mern. En la página de inicio de este proyecto, puede ver las cosas que tiene el usuario actual. El problema es que la lista puede cambiar en cada momento, porque a otro usuario le puede pasar a esa lista otras cosas. Entonces, para que se actualice, lo puse en el gancho useEffect. El problema ahora es que mi servidor está recibiendo toneladas de solicitudes, y siempre la misma. No sé si es el caso establecer un temporizador que se vuelva a procesar después de x segundo, para hacer que el trabajo de mi servidor sea más liviano, o si hay una forma de rehacer la solicitud al servidor en algún caso. Aquí está el pequeño código que gestiona la solicitud:
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)) })Si alguien tiene alguna sugerencia, por favor dígame. Leí algo sobre la reacción de renderizado, pero no encontré una mejor manera que un temporizador o algo similar. Gracias.
Como segundo parámetro de su useEffect, debe indicar qué variable está buscando para volver a representar. Si desea que useEffect se reproduzca solo una vez, debe poner [] como segundo parámetro así:
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)) }, [])Si tiene una variable que puede cambiar, por ejemplo, 'archivo', simplemente agréguela en la matriz:
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])