Позвольте мне объяснить, как использовать два разных контекста одновременно.
Первый шаг: Вам необходимо создать два разных контекста
const AppContext = React.createContext(null);
const SocketContext = React.createContext(null);
Второй шаг: Вам необходимо реализовать свой пользовательский хук.
const UseSharedLogic = () => {
// your common logic
}
Затем поделиться им с помощью контекстного API.
<AppContext.Provider value={state}>
<SocketContext.Provider value={UseSharedLogic}>
<App />
</DispatchContext.Provider>
</StateContext.Provider>
Третий шаг: Вы должны использовать эти контексты в компоненте, который вам нужен, чтобы использовать их внутри него.
const state = React.useContext(AppContext);
const socket = React.useContext(SocketContext);
Здесь вы можете использовать оба контекста вместе, и вы используете одно значение из одного контекста в другом.
Давайте предположим, что у контекста сокета есть функция connect, и это зависит от значения из контекста приложения, вы можете сделать что-то вроде этого.
socket.connect(state.anyValue);