UNPKG

react-reffect

Version:

Create components whose prop changes map to a global side effect with the power of redux and new Context API

32 lines (27 loc) 894 B
import React from "react"; import PropTypes from "prop-types"; import getDisplayName from "./getDisplayName"; export default function createProvider(SideEffectContext, WrappedComponent) { const SideEffectProvider = ({ store, children }) => { if (!store || !store.dispatch || !store.getState) { throw new Error("Expected store to be a redux store."); } return ( <SideEffectContext.Provider value={store}> {children} </SideEffectContext.Provider> ); }; SideEffectProvider.propTypes = { store: PropTypes.shape({ subscribe: PropTypes.func.isRequired, dispatch: PropTypes.func.isRequired, getState: PropTypes.func.isRequired }).isRequired, children: PropTypes.element.isRequired }; SideEffectProvider.displayName = `SideEffectProvider(${getDisplayName( WrappedComponent )})`; return SideEffectProvider; }