deskbookers-react-intl-redux

0.5.2 • Public • Published

React Intl Redux

Redux binding for React Intl.

Installation

npm install react-intl-redux react react-intl react-redux redux --save

Usage

import React from 'react'
import ReactDOM from 'react-dom'
import {createStore, combineReducers} from 'redux'
import {FormattedNumber} from 'react-intl'
import {Provider, intlReducer} from 'react-intl-redux'
import reducers from '<project-path>/reducers'
 
const reducer = combineReducers({
  ...reducers,
  intl: intlReducer,
})
 
const store = createStore(reducer)
 
const App = () => (
  <Provider store={store}>
    <FormattedNumber value={1000} />
  </Provider>
)
 
ReactDOM.render(<App />, document.getElementById('container'))

Provide locale and messages on load

You should provide a different locale and messages if your user is not using en locale.

const initialState = {
  intl: {
    locale: 'it',
    messages: {
      'app.greeting': 'Ciao!',
    },
  },
  // ...other initialState
}
const store = createStore(reducer, initialState)

Refer to the initial-locale example for more details.

Switch locale and messages on request

You could also switch locale on user's request by dispatching updateIntl action.

import {updateIntl} from 'react-intl-redux'
 
store.dispatch(updateIntl({
  locale,
  messages,
}))

Provider vs IntlProvider

In most cases, react-intl-redux will be wrapped immediately after Provider from react-redux. For convenient, react-intl-redux provides Provider to do that for you.

However, if you don't want it, you could do it manually via IntlProvider. For example,

import React from 'react'
import {IntlProvider} from 'react-intl-redux'
import {Provider} from 'react-redux'
 
const App = () => (
  <Provider store={store}>
    <IntlProvider>
      <App />
    </IntlProvider>
  </Provider>
)

Use with redux-immutable

See the usage in test.

Package Sidebar

Install

npm i deskbookers-react-intl-redux

Weekly Downloads

1

Version

0.5.2

License

MIT

Last publish

Collaborators

  • deskbookers