11import React , { FC , useEffect , useRef , useState } from "react" ;
2-
32import styles from "./languageSelector.module.scss" ;
43import { useTranslation } from "react-i18next" ;
54import { useRouter } from "next/router" ;
@@ -12,27 +11,33 @@ const LanguageSelector: FC = () => {
1211
1312 const router = useRouter ( ) ;
1413 const locale = router . locale ;
14+
1515 const handleClickOutside = ( event : MouseEvent ) => {
1616 if ( divRef . current && ! divRef . current . contains ( event . target as Node ) ) {
1717 setOpenLanguage ( false ) ;
1818 }
1919 } ;
2020
2121 const changeLanguage = ( lng : string ) => {
22- i18n . changeLanguage ( lng ) ;
23- const { pathname, query } = router ;
24- router . push ( { pathname, query } , undefined , { locale : lng } ) ;
22+ if ( i18n . language !== lng ) {
23+ i18n . changeLanguage ( lng ) ;
24+ const { pathname, query } = router ;
25+ router . push ( { pathname, query } , undefined , { locale : lng } ) ;
26+ queryClient . invalidateQueries ( ) ;
27+ }
2528 setOpenLanguage ( false ) ;
26- queryClient . invalidateQueries ( ) ;
2729 } ;
2830
2931 useEffect ( ( ) => {
3032 document . addEventListener ( "mousedown" , handleClickOutside ) ;
31- locale && changeLanguage ( locale ) ;
33+ if ( locale && i18n . language !== locale ) {
34+ changeLanguage ( locale ) ;
35+ }
3236 return ( ) => {
3337 document . removeEventListener ( "mousedown" , handleClickOutside ) ;
3438 } ;
35- } , [ ] ) ;
39+ } , [ locale , i18n . language ] ) ;
40+
3641 return (
3742 < div className = { styles . languageBox } >
3843 < button
0 commit comments