react-intl-number-format
Version:
Number and currency formatter based on the ECMAScript Internationalization API
77 lines (52 loc) • 2.64 kB
Markdown
# react-intl-number-format
Tiny react component that wraps the ECMAScript Internationalization API with sane defaults to work with numbers and currencies.
To see in detail the components `Number` and `Currency` with the list of props and examples please [check the documentation in Docz](https://react-intl-number-format.netlify.com/).
## Features
- Effortless format numbers and currencies for different locales
- Relies in the standard [Intl.NumberFormat constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat)
- Possibility to use it as an standalone React Component using props to configure it
- Possibility to use a general config using a React Context Provider
- Detects automatically the browser language as a default locale
- Exposes a function to update the Provider config
- Ability to render a number or a currency with any html tag
- Props match [Intl.NumberFormat constructor arguments](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat#Parameters)
## Support
- [Works in any modern browsers, and IE >= 11](https://caniuse.com/#feat=internationalization)
## Installation
```shell
npm i react-intl-number-format
```
## Usage
This is the easiest way to use it:
```js
import { Number } from "react-intl-number-format"
const HelloWorld = () => (
<Number locale="de-DE">20000</Number> // renders 20.000
)
```
You don't even need to pass a `locale` prop, by default it will try guess the locale from the browser.
## Recommended usage with a React Context Provider
The recommended way to use it would be with a Context.Provider, this will allow you to have a global configuration so you don't need to pass props every time you format a number or a currency.
A provider `IntlProvider` is exposed with a default config, but you can you set your own config and use it in your `App` component.
```js
// In your App.js or similar...
import { IntlProvider } from "react-intl-number-format"
const intlConfig = {
locale: "en-US",
options: {
currency: "USD",
maximumFractionDigits: 2
}
}
const App = () => (
<IntlProvider config={intlConfig}>
...
</IntlProvider>
)
// In any other part of your code
import { Currency } from "react-intl-number-format"
const HelloWorld = () => (
<Currency>20000</Currency> // renders $20,000 (based on the provider config)
)
```
The configuration object that `IntlProvider` expects is basically matching [the arguments from Intl.NumberFormat constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat#Parameters).