Estoy usando setInterval en reaccionar redux. A continuación se muestra mi función.
FileAction.js
export const SetPath = ({ path, location }) => async (dispatch) => { try { let interval; if (pre_path === path) { interval = setInterval(() => { handler(path); }, 3000); } else { pre_path = path; clearInterval(interval); } const handler = async (pth) => { const mtime = await axios.post('/api/file', { data: pth }); dispatch({ type: GET_EVENT, payload: { time: mtime, position: location } }); } } catch (err) { dispatch({ type: GET_ERROR }); } }; Lo que me gustaría hacer es cuando llamo a la función SetPath , tiene que obtener datos de api/file cada 3 segundos.
Pero ahora, cuando paso otra ruta a la función SetPath , duplica el intervalo.
¿Cómo puedo implementar esto?
Está definiendo la variable de interval dentro de la función setPath , por lo tanto, la variable se reinicializará cada vez que se ejecute setPath . Intenta definirlo fuera de la función. Es posible que deba usar useRef para no perder la variable cuando se produzca una nueva representación.