#reactjs
Вопрос:
Я использую React-Context-API вместо redux, но после создания stateProvider и редуктора, когда я заворачиваю компонент приложения внутри stateProvider в Index.js. Все мое приложение заменено белой страницей на локальном хосте. Фрагменты кода приведены ниже.
Index.js
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";
import { StateProvider } from "./StateProvider";
import reducer, { initialState } from "./reducer";
ReactDOM.render(
<React.StrictMode>
<StateProvider initialState={initialState} reducer={reducer}>
<App />
</StateProvider>
</React.StrictMode>,
document.getElementById("root")
);
reportWebVitals();
StateProvider.js
import React, { createContext, useContext, useReducer } from "react";
export const StateContext = createContext();
export const StateProvider = ({ reducer, initialState, childern }) => (
<StateContext.Provider value={useReducer(reducer, initialState)}>
{childern}
</StateContext.Provider>
);
export const useStatevalue = () => useContext(StateContext);
reducer.js
export const initialState = {
// user: null,
basket: [],
};
function reducer(state, action) {
switch (action.type) {
case "ADD_TO_BASKET":
break;
case "REMOVE_FROM_BASKET":
break;
default:
return state;
}
}
export default reducer;
Комментарии:
1. Ваше состояние должно быть фактическим состоянием в компоненте stateProvider, а не объектом Javascript
2. Можете ли вы привести пример, который я не понял? Заранее спасибо
Ответ №1:
childern
должно быть children
, в StateProvider.js
Ответ №2:
Ты неправильно children
написала . И ваш редуктор всегда должен возвращать состояние и не break
возвращать .