A higher-order component for keeping Immutable objects outside your presentational components
yarn add with-immutable-props-to-js
or
npm install with-immutable-props-to-js
This library also lists react
, react-dom
, and immutable
as peer dependencies, so make sure they are installed in your project as well.
import withImmutablePropsToJS from 'with-immutable-props-to-js'
If you're not using ECMAScript modules:
const withImmutablePropsToJS = require('with-immutable-props-to-js').default
Example:
import React from 'react'
import { connect } from 'react-redux'
import withImmutablePropsToJS from 'with-immutable-props-to-js'
const MyDumbComponent = props => {
// ...
// props.objectProp is turned into a plain JavaScript object
// props.arrayProp is turn into a plain JavaScript array
}
MyDumbComponent.propTypes = {
objectProp: PropTypes.object,
arrayProp: PropTypes.array,
}
const mapStateToProps = state => ({
objectProp: mySelectorThatReturnsImmutableMap(state),
arrayProp: mySelectorThatReturnsImmutableList(state),
})
export default connect(mapStateToProps)(withImmutablePropsToJS(MyDumbComponent))
You can read about the rationale for this higher-order component here.
For information on how to contribute to this project, check out the contributing guide.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Special thanks to Carol Skelly for donating the 'tophat' GitHub organization.