I have following Code in my Context.js
:
import { createContext, useEffect, useReducer } from "react";
import Reducer from "./Reducer";
const INITIAL_STATE = {
user: JSON.parse(localStorage.getItem("user")) || null,
isFetching: false,
error: false,
};
export const Context = createContext(INITIAL_STATE);
export const ContextProvider = ({ children }) => {
const [state, dispatch] = useReducer(Reducer, INITIAL_STATE);
useEffect(() => {
localStorage.setItem("user", JSON.stringify(state.user));
}, [state.user]);
return (
<Context.Provider
value={{
user: state.user,
isFetching: state.isFetching,
error: state.error,
dispatch,
}}
>
{children}
</Context.Provider>
);
};
Now I want to use the Context in a class component and especially call the dispatch function, here a minimal example:
export default class Register extends Component {
static contextType = Context;
componentDidMount() {
const { dispatch } = this.context;
dispatch({ type: "LOGIN_START" });
}
render() {
return (
<div></div>
)
}
}
The Problem now is that dispatch
is undefined, when I want to call it inside my class. Before I used the same context with const { dispatch, isFetching } = useContext(Context);
inside a functional component and everything worked fine, what is the problem?