I am using context api in my nextjs project but whenever i am trying to get value from state using context api it is always throwing error "undefined"
AppReducer.js
const initialState = {
isMobile: false,
user: {},
};
export const AppReducer = (state = initialState, action) => {
switch (action.type) {
case "init_stored": {
return action.value;
}
case "setMobile": {
return {
...state,
isMobile: (typeof window !== "undefined") && window.innerWidth <= 768,
};
}
case "setUser": {
return {
...state,
user: action.payload,
};
}
default: {
return state;
}
}
};
AppContext.js
import { createContext, useContext, useMemo, useReducer } from "react";
import { AppReducer, initialState } from "./AppReducer";
const AppContext = createContext();
export function AppWrapper({ children }) {
const { state, dispatch } = useReducer(AppReducer);
console.log("AppWrapper: state", state);
const contextValue = useMemo(() => {
return { state, dispatch };
}, [state, dispatch]);
return (
<AppContext.Provider value={contextValue}>{children}</AppContext.Provider>
);
}
export function useAppContext() {
return useContext(AppContext);
}
_app.js
import { AppWrapper } from 'context/AppContext'
import Layout from '@/components/layout'
function MyApp({ Component, pageProps }) {
return (
<AppWrapper>
<Layout>
<Component {...pageProps} />
</Layout>
</AppWrapper>
)
}
export default MyApp
I am trying to access it inside my homepage like this
const { state } = useAppContext();
console.log(state, 'state');
Please help what wrong i am doing or anything i am missing here ?