Реагирование контекста на доступ к текущему состоянию вне компонента - PullRequest
1 голос
/ 08 марта 2020

Я пытаюсь создать реагирующее приложение, и я новичок в хуках и новом контекстном 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 из избыточного хранилища

...