docbrown/app/javascript/chat/components/ConnectStateProvider.jsx
Nick Taylor 57f3863d09
Added the <ConnectStateProvider /> (#9799)
* Added the <ConnectStateProvider />

* Moved <ConnectStateProvider /> to chat/components.
2020-10-19 05:18:04 -04:00

21 lines
722 B
JavaScript

import { h, createContext } from 'preact';
import { useReducer } from 'preact/hooks';
const store = createContext();
const { Provider } = store;
/**
* Provides state management for the Connect feature of Forem.
*
* @param {object} props
* @param {JSX.Element} props.children Child React elements
* @param {object} props.initialState The initial value to store as state
* @param {Function} props.reducer Given the current state and an action, returns the new state
*/
function ConnectStateProvider({ children, initialState, reducer }) {
const [state, dispatch] = useReducer(reducer, initialState);
return <Provider value={{ state, dispatch }}>{children}</Provider>;
}
export { store, ConnectStateProvider };