Do not re-compute object.keys on locale check

This commit is contained in:
Paul Kaplan committed 2018-11-01 10:32:02 -04:00
1 parent 10c51fa4c1
commit 9dc453bb24
1 file changed
+6 -5
+6 -5
View File
@@ -17,7 +17,7 @@ class LanguageSelector extends React.Component {
}
handleChange (e) {
const newLocale = e.target.value;
if (this.props.supportedLocales.includes(newLocale)) {
if (this.props.messagesByLocale[newLocale]) {
this.props.onChangeLanguage(newLocale);
document.documentElement.lang = newLocale;
}
@@ -25,7 +25,7 @@ class LanguageSelector extends React.Component {
render () {
const {
onChangeLanguage, // eslint-disable-line no-unused-vars
supportedLocales, // eslint-disable-line no-unused-vars
messagesByLocale, // eslint-disable-line no-unused-vars
children,
...props
} = this.props;
@@ -43,13 +43,14 @@ class LanguageSelector extends React.Component {
LanguageSelector.propTypes = {
children: PropTypes.node,
currentLocale: PropTypes.string.isRequired,
onChangeLanguage: PropTypes.func.isRequired,
supportedLocales: PropTypes.arrayOf(PropTypes.string)
// Only checking key presence for messagesByLocale, no need to be more specific than object
messagesByLocale: PropTypes.object, // eslint-disable-line react/forbid-prop-types
onChangeLanguage: PropTypes.func.isRequired
};
const mapStateToProps = state => ({
currentLocale: state.locales.locale,
supportedLocales: Object.keys(state.locales.messagesByLocale)
messagesByLocale: state.locales.messagesByLocale
});
const mapDispatchToProps = dispatch => ({