All Projects → tkh44 → fold-render-props

tkh44 / fold-render-props

Licence: other
Fold multiple render prop components into a single component.

Programming Languages

javascript
184084 projects - #8 most used programming language

fold-render-props

Fold multiple render prop components into a single component.

npm version Build Status codecov

Install

npm i fold-render-props -S

Basic Example

import folder from 'fold-render-props'

const ComponentA = props => {
  return props.children({
    name: props.name.toUpperCase()
  })
}

const ComponentB = props =>
  props.children({
    name: props.name.big()
  })


const ComponentC = props => {
  return props.children({
    name: props.name.repeat(3)
  })
}

const Folder = folder([
  (result, render) => (
    <ComponentA name={'⒜' + result.name + '⒜'} children={render} />
  ),
  (result, render) => (
    <ComponentB name={'⒝' + result.name + '⒝'} children={render} />
  ),
  (result, render) => (
    <ComponentC name={'⒞' + result.name + '⒞'} children={render} />
  )
])

// Usage
const MyComponent = (props) => (
  <div>
    <Folder name="thing">{r => <pre>{JSON.stringify(r)}</pre>}</Folder>
  </div>
)

This renders

<div>
  <pre>
    { "name": "⒞<big>⒝⒜THING⒜⒝</big>⒞⒞<big>⒝⒜THING⒜⒝</big>⒞⒞<big>⒝⒜THING⒜⒝</big>⒞" }
  </pre>
</div>
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].