network-resurrector/src/providers/ApplicationStateProvider.js

34 lines
921 B
JavaScript
Raw Normal View History

2023-03-03 08:48:10 +02:00
import React, { useReducer, useMemo } from "react";
2023-03-03 23:56:31 +02:00
import PropTypes from "prop-types";
2023-03-03 08:48:10 +02:00
import {
ApplicationStateContext,
ApplicationDispatchContext
} from "../state/ApplicationContexts";
import {
reducer,
dispatchActions as reducerDispatchActions
} from "../state/reducer";
import { initialState } from "../state/initialState";
const ApplicationStateProvider = ({ children }) => {
const [state, dispatch] = useReducer(reducer, initialState);
const dispatchActions = useMemo(
() => reducerDispatchActions(dispatch),
[dispatch]
);
return (
<ApplicationStateContext.Provider value={state}>
<ApplicationDispatchContext.Provider value={dispatchActions}>
{children}
</ApplicationDispatchContext.Provider>
</ApplicationStateContext.Provider>
);
};
2023-03-03 23:56:31 +02:00
ApplicationStateProvider.propTypes = {
children: PropTypes.node.isRequired
};
2023-03-03 08:48:10 +02:00
export default ApplicationStateProvider;