UNPKG

react-redux

Version:

Official React bindings for Redux

42 lines (38 loc) 1.32 kB
import { ReactReduxContext } from '../components/Context' import { useStore as useDefaultStore, createStoreHook } from './useStore' /** * Hook factory, which creates a `useDispatch` hook bound to a given context. * * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`. * @returns {Function} A `useDispatch` hook bound to the specified context. */ export function createDispatchHook(context = ReactReduxContext) { const useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context) return function useDispatch() { const store = useStore() return store.dispatch } } /** * A hook to access the redux `dispatch` function. * * @returns {any|function} redux store's `dispatch` function * * @example * * import React, { useCallback } from 'react' * import { useDispatch } from 'react-redux' * * export const CounterComponent = ({ value }) => { * const dispatch = useDispatch() * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), []) * return ( * <div> * <span>{value}</span> * <button onClick={increaseCounter}>Increase counter</button> * </div> * ) * } */ export const useDispatch = /*#__PURE__*/ createDispatchHook()