У меня есть простой ванильный выбор в моем компоненте:
Содержимое. js:
state = {
langValue: 'fr'
};
handleChange = event => {
const newValue = event.target.value;
this.setState({ value: newValue }, () =>
this.props.onChangeLanguage(newValue)
);
};
render() {
return (
<select value={this.state.langValue} onChange={this.handleChange}>
<option value="fr">Français</option>
<option value="en">English</option>
</select>
);
}
Вызван метод onChangeLanguage, и переводы обновлены, но значение выбора равно не меняется Если я удаляю обратный вызов в установленном состоянии, значение выбора обновляется, но язык не обновляется (что нормально)
Приложение. js:
...
let i18nConfig = {
locale: navigator.language.split(/[-_]/)[0],
messages: getMessagesFromLang(navigator.language.split(/[-_]/)[0])
};
const [lang, setLang] = React.useState(i18nConfig.locale); // keeps state of lang in App
function onChangeLanguage(lang) {
setLang(lang); // changes the lang when selec value changes
}
...