hawks
v0.1.7
Published
A lightweight bundle of Higher-Order Components (HOCs) for React, in the vein of recompose.
Downloads
17
Readme
hawks
A lightweight, cherry-pickable bundle of Higher-Order Components (HOCs) for React, in the vein of Recompose.
Notes
/lib
cherry-picking convention
All hawks
components are cherry-pickable with import Component from 'hawks/lib/component'
.
Pure by default
Most components produced by hawks
are "pure-by-default", which is to say they inherit from React.PureComponent
and will only render if they receive new props or state.
Components
withConstProps
withConstProps(
propMap: (initialProps) => {
[constPropName: string]: [value: any]
...
},
): HigherOrderComponent
Like withProps
, except the props are created once at component initialization time, and never change throughout the component's lifecycle.
withConstHandlers
withConstHandlers(
handlers: {
[constPropName: string]: [handler: function(props, ...args)]
...
}
): HigherOrderComponent
recompose
's withHandlers
implementation regenerates the handlers
whenever the incoming props change, largely defeating the performance optimizations that withHandlers
is supposed to provide when used with pure rendering.
withConstHandlers
generates truly-constant handler functions that never change throughout the component lifecycle. Instead of obtaining props from an ever-changing closure, the handler function is passed the props
at the time of handler execution as its first argument. The remaining arguments from the called handler are spread to the inner handler as well.
withPropsFromObservables
withPropsFromObservables(
propsToObservableMap: (initialProps) => {
[valuePropName: string]: [observable: Observable]
...
},
shouldUpdate?: (nextProps, currentProps) => boolean
): HigherOrderComponent
Given a function mapping props to an observable map, merges corresponding props into the subcomponent's props (as in withProps
) with the current value of each observable. The observables are watched for changes and the subcomponent is rerendered with new props in realtime.
The propsToObservableMap
function receives the props of the upstream components and must produce an object of the form { propName: Observable, ...}
with each named property receiving the current value of the corresponding observable.
By default, propsToObservableMap
will be called every time the props change and the resulting observable map will be diffed against the previous one, with observables being (un)subscribed as needed. If the optional shouldUpdate
function is provided, the propsToObservableMap
will only be called, and the internal observable state will only be updated, if the shouldUpdate
returns a truthy value upon receiving new props.
withRouterLink
withRouterLink(
eventName: string (default 'onClick'),
routerAction: string (default: 'push')
): HigherOrderComponent
NB: This component is for use with the
react-router
withRouter
HOC, which must precede it in thecompose()
chain. This library does not depend onreact-router
nor enforce the presence of the HOC; you must do this yourself.
Creates an event handler on the wrapped component which will cause a react-router
transition when called. By default, the onClick
event handler is provided, and the router state is push
ed when the handler fires. This component will also add an active
prop to the wrapped component, according as the router's current path matches the path this component links to.
You may pass the standard react-router
props to the outer component: to
for URL, query
, hash
, and state
for parameter-passing, and onlyActiveOnIndex
to mask out route wildcards.