import {useStateValue} from "../components/StateProvider";
const [{basket}, dispatch] = useStateValue();
에러 메시지에 있는 공식 문서 확인
브라우저 콘솔탭 다시 확인
- 브라우저 콘솔탭에서 에러가 나는 부분을 따라가보니 useStateValue(); 의 리턴값이 undefined 이어서 생기는 문제라고 판단.
왜 useStateValue의 값이 undefined 일까?
import React, {createContext, useContext, useReducer} from "react";
export const StateContext = createContext();
export const StateProvider = ({reducer, initialState, children}) => (
<StateContext.Provider value={useReducer(reducer, initialState)}>
{children}
</StateContext.Provider>
);
export const useStateValue = () => useContext(StateContext);
export const initialState = {
basket: [],
}
const reducer = (state, action) => {
switch (action.type) {
case 'ADD_TO_BASKET':
return {
...state,
basket: [...state.basket, action.item]
};
case 'REMOVE_FROM_BASKET':
const index = state.basket.findIndex(
(basketItem) => basketItem.id === action.id
);
let newBasket = [...state.basket];
if (index >= 0) {
newBasket.splice(index, 1);
} else {
console.warn(
' (id: ' +
action.id +
')이 장바구니에 존재하지 않습니다 '
)
}
return {
...state,
basket: newBasket
};
default:
return state;
}
}
export default reducer;
<BrowserRouter>
<App/>
</BrowserRouter>
<BrowserRouter>
<StateProvider initialState={initialState} reducer={reducer} >
<App/>
</StateProvider>
</BrowserRouter>