Estoy usando las funciones de internacionalización integradas de Next.js para cambiar el idioma de mi aplicación y todo funciona perfectamente excepto por un comportamiento no deseado:
Llamar a la función changeLanguage hace que la página se desplace hacia la parte superior a pesar de configurar la opción de desplazamiento del enrutador en false .
Tenga en cuenta que Next.js - router.push sin desplazarse hacia la parte superior y Next.js mantienen la posición de desplazamiento cuando el enrutamiento de la página no resolvió mi problema.
import { useRouter } from "next/router"; import Select, { components } from "react-select"; const LanguageToggler = () => { const router = useRouter(); const { locale, pathname, locales, asPath } = router; const changeLanguage = (e) => { const locale = e.value; // is equal to one of these values: ['en', 'sv', 'ru', 'fr'] router.push(pathname, asPath, { locale }, { scroll: false }); }; return ( <Select ...irrelevant onChange={changeLanguage} components={{ Option: CustomSelectOption, }} /> ) }; export default LanguageToggler; PD: la biblioteca de reacción-selección se usa para mostrar una lista desplegable de banderas, al hacer clic en cada bandera se invoca el cambio de changeLanguage para actualizar la configuración regional en consecuencia.
El siguiente router.push acepta tres parámetros.
router.push(pathname, asPath, { locale }, { scroll: false });debiera ser
router.push(pathname, asPath, { locale, scroll: false });