if (new_path !== window.location.pathname + window.location.search) { history.replace({ pathname: new_path, search: "", }); }EDITADO:
new_path es solo una cadena. Sin la instrucción if, el código anterior provocará un bucle infinito.
¿Es ese el comportamiento esperado?
Solo causará un bucle infinito si
new_path es diferente de window.location.pathname + window.location.search .
Si desea verificar sus valores, intente conservar los registros en las herramientas de desarrollo de Chrome y luego inicie su aplicación. De esa manera, puede ver por qué está generando un bucle infinito.
Si new_path es un estado en su aplicación, debería estar dentro de {}
pathname: {new_path}La condición "si" es incorrecta.
if (new_path !== window.location.pathname + window.location.search) {} Esto siempre será cierto y history.replace se ejecutará nuevamente.
entonces la solución es
if (new_path[<your key>] !== window.location[<your key>]) {} Si su intención es que new_path sea una cadena, debe verificar cuál es el valor de new_path