Я пытаюсь создать реагирующее приложение, и я новичок в хуках и новом контекстном API, я обычно использую в своих проектах избыточность, но я хотел попробовать контекстный API и хуки в этом проекте, но я борюсь с некоторыми концепциями контекста API. Единственное, что мне нужно, - это функция getState, такая как redux. Я пытался использовать редукторы;
import MainContext from '../contexts/mainContext';
const initialState = {
localMember:null,
remoteMember:null,
signedIn:false,
videoPermission: true,
audioPermission: true,
selectedGender:0,
connecting:false,
};
const reducer = (state,action) => {
switch(action.type) {
case constants.SET_STATE:{
console.log(action.payload);
return {...state,...action.payload}
}
case constants.UPDATE_LOCAL_MEMBER:{
return {...state, localMember:{...state.localMember,...action.payload} }
}
default:
return state;
}
};
const ProviderComponent = () => {
const [state,dispatch] = React.useReducer(reducer,initialState);
const value = {
dispatch:dispatch,
getState:() => state
};
Provider Component
<MainContext.Provider value={value}>
{children}
</MainContext.Provider>
}
const SubComponent = () => {
const {getState,dispatch} = useContext(MainContext);
useEffect( ()=> {
SocketClient.install({getState,dispatch});
}, [init]);
return <div>component<div>;
}
и ловушку useContext, чтобы получить текущее состояние и функцию getState, и передать эту функцию в качестве аргумента классу, когда компонент монтируется с помощью useEffect перехватил и сохранил эту функцию в этом классе и попытался получить доступ к состоянию, вызвав его, но у меня нет текущего состояния, состояние всегда одинаковое и начальное, как я могу добиться чего-то, что мы делаем с помощью функции getState из избыточного хранилища