web-dev-qa-db-fra.com

Est-il possible d’accéder aux paramètres régionaux actuels avec React-Intl?

Je me demandais s'il existe un moyen d'accéder aux paramètres régionaux actuellement définis avec React-Intl?

Disons que je crée ceci:

render() {
  return (
    <IntlProvider locale="en">
      <App>
    </IntlProvider>
  );
}

Dans l'application, je voudrais faire quelque chose comme ceci, afin d'accéder aux paramètres régionaux que j'ai transmis à la IntlProvider

this.props.locale

Est-il possible de faire quelque chose comme ça?

Merci.

8
alexmngn

Vous pouvez obtenir les paramètres régionaux actuels dans n'importe quel composant de votre application en y accédant simplement à partir de "l'API d'injection" de React Intl:

import {injectIntl, intlShape} from 'react-intl';

const propTypes = {
  intl: intlShape.isRequired,
};

const MyComponent = ({intl}) => (
  <div>{`Current locale: ${intl.locale}`}</div>
);

MyComponent.propTypes = propTypes

export default injectIntl(MyComponent);
9
pierrepinard_2

Oui, si vous souhaitez accéder aux paramètres régionaux actuels de n’importe quel composant enfant, le meilleur moyen est de lire context , car IntlProvider fournit un contexte. Définissez dans votre application ou tout autre composant le contexte que vous souhaitez. vouloir accéder à:

App.contextTypes = {
    intl: PropTypes.object
};

Vous pouvez maintenant lire les paramètres régionaux actuels dans votre composant comme suit:

render() {
    return (
        <div>{this.context.intl.locale}</div>
    )
}
1
Borys Kupar