import React from 'react' import { noop } from '../../func' type Effect = () => () => void function hocWithConfig

(Component: React.ComponentClass

| React.SFC

, effect: Effect) { class Composed extends React.Component

{ static displayName = `withEffect<${Component.displayName || Component.name || 'Unknown'}>` teardown = noop componentDidMount() { this.teardown = effect() } componentWillUnmount() { this.teardown() } render() { return } } return Composed as React.ComponentClass

} export function withEffect(effect: Effect) { return Component => hocWithConfig(Component, effect) }