我有一个语言更改下拉列表。当我选择一种语言并返回其他屏幕时,语言不会改变。如果我正在保存文件,那么在它改变之后。每次我保存文件时,语言都会改变。这背后的问题是什么?
language_screen.js:
const LanguageScreen = (props) => {
const dispatch = useDispatch();
const [open, setOpen] = useState(false);
const [value, setValue] = useState(null);
const [items, setItems] = useState([
{ label: "English", value: "en" },
{ label: "Hebrew", value: "he" },
]);
const selectedLanguage = useSelector(
(state) => state.changeLangReducer.isEnabled
);
const languageValue = () => {
if (selectedLanguage) {
dispatch(disableHe());
} else {
dispatch(enableHe());
}
};
i18n.locale = selectedLanguage ? "he" : "en";
return (
<Container>
<DropDownPicker
onChangeValue={languageValue}
value={selectedLanguage}
placeholder="Select a Language"
open={open}
value={value}
items={items}
setOpen={setOpen}
setValue={setValue}
setItems={setItems}
/>
</Container>
);
};
change_lang_reducer.js:
const initialState = {
isEnabled: false,
};
const changeLangReducer = (state = initialState, action) => {
switch (action.type) {
case ENABLE_HE:
return { isEnabled: true };
case DISABLE_HE:
return { isEnabled: false };
}
return state;
};