tophat / with-immutable-props-to-js

:smiling_imp: A higher-order component for keeping Immutable objects outside your presentational components

Home Page:https://with-immutable-props-to-js.js.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

with-immutable-props-to-js

Logo

npm CICD npm downloads codecov Renovate enabled All Contributors Discord Maturity badge - level 3

A higher-order component for keeping Immutable objects outside your presentational components

Installation

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.

Usage

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))

Motivation

You can read about the rationale for this higher-order component here.

Contributors

For information on how to contribute to this project, check out the contributing guide.

Thanks goes to these wonderful people (emoji key):


Michael Rose

πŸ’» πŸ“– πŸš‡

Brandon Baksh

πŸš‡

greenkeeper[bot]

πŸš‡

Jake Bolam

πŸ“– πŸš‡

Sanchit Gera

πŸ“–

Siavash Mahmoudian

πŸš‡

monicamm95

🎨

Danilo Matamoros

πŸ’»

Roman Mahotskyi

πŸš‡

Pablo Morra

πŸ’» ⚠️

dependabot[bot]

πŸš‡

jinwoo choi

πŸ’»

Marc Cataford

πŸ“–

Michael Chen

πŸ’»

This project follows the all-contributors specification. Contributions of any kind welcome!

Credits

Special thanks to Carol Skelly for donating the 'tophat' GitHub organization.

About

:smiling_imp: A higher-order component for keeping Immutable objects outside your presentational components

https://with-immutable-props-to-js.js.org

License:Apache License 2.0


Languages

Language:JavaScript 87.9%Language:CSS 8.0%Language:HTML 4.1%