Skip to content

Commit d54f60e

Browse files
improve language selector
1 parent 79be592 commit d54f60e

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/component/languageSelector/languageSelector.tsx

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { FC, useEffect, useRef, useState } from "react";
2-
32
import styles from "./languageSelector.module.scss";
43
import { useTranslation } from "react-i18next";
54
import { 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

Comments
 (0)