UNPKG

react-timer-hoc

Version:

A React timer higher-order component

75 lines (51 loc) 2.44 kB
[![npm version](https://badge.fury.io/js/react-timer-hoc.svg)](https://badge.fury.io/js/react-timer-hoc) [![Build Status](https://travis-ci.org/troch/react-timer-hoc.svg?branch=v1.0.4)](https://travis-ci.org/troch/react-timer-hoc) # React timer component (higher-order) > A React higher-order timer component Keep your components simple, testable and composable by using higher-order components. This higher-order timer component will re-render your component at the desire rate (in milliseconds). This higher-order component takes care of when to call render on your component, so your component has only to care about the rendering logic. > A higher-order component is just a function that takes an existing component and returns another component that wraps it. Read about higher-order components here (applies to deku as well): __[Mixins Are Dead. Long Live Composition](https://medium.com/@dan_abramov/mixins-are-dead-long-live-higher-order-components-94a0d2f9e750#.c8wftb16t)__. __Demo__: http://jsbin.com/nalixa/edit?html,js,output ### Applications - Countdowns (time remaining) - Timers (time elapsed) - Forcing regular updates / refresh of time-based contents ### Features - Stop and resume a timer - Change its delay on the fly - Synchronize with a timestamp (local or server clock) ### Installation ```sh npm install --save react-timer-hoc ``` ### Usage Create a new component by wrapping your component with __timer(delay)(Component)__ HOC. Alongside the properties you specify, the created component will receive a `timer` property containing: - A `tick` value (incremented) - The specified `delay` value - `stop`, `resume` and `setDelay` functions __Important notice with ES5__ > babel 6 changed the way transpiled default exports work. See [Babel 6 changes how it exports default](http://stackoverflow.com/questions/33505992/babel-6-changes-how-it-exports-default/33506169#33506169) on stack overflow. ```javascript // ES5 var timer = require('react-timer-hoc').default; ``` ```javascript // ES2015+ import React from 'react'; import ReactDOM from 'react-dom'; import timer from 'react-timer-hoc'; function myComponent({ timer }) { return <div>Started { timer.tick * timer.delay }ms ago.</div> } const Timer1 = timer(1000)(myComponent); const Timer2 = timer(2000)(myComponent); ReactDOM.render( <div> <Timer1 /> <Timer2 /> </div>, document.getElementById('app') ); ```