Я хочу сохранить один экземпляр стороннего класса менеджера API в своем приложении для реагирования.
Я пытаюсь добиться этого, используя React Context Api следующим образом:
Контекст API:
import * as React from "react";
import { ApiManager } from "../ApiManager";
const defaultValue = new ApiManager()
const ApiContext = React.createContext(defaultValue);
const ApiProvider = ApiContext.Provider;
const ApiConsumer = ApiContext.Consumer;
const withApi = (enhanced) => {
return (
<ApiConsumer>
{api => enhanced }
</ApiConsumer>
)
}
export default ApiContext;
export {ApiContext, ApiProvider, ApiConsumer, withApi};
в моем клиенте я бы сделал что-то вроде этого:
const api = новый ApiManager({ хост: апихост, базовый URL: апиБасеурл, ключ: apKey, сеансТокен: персистедсессионтокен });
ReactDOM.hydrate(
<Provider store = {store}>
<PersistGate loading = {<h1>loading...</h1>} persistor = {persistor}>
<BrowserRouter>
<ApiProvider value = {api}>
<Main />
</ApiProvider>>
</BrowserRouter>
</PersistGate>
</Provider>, document.querySelector('#app')
);
У меня есть 3 вопроса:
redux-persist?




ApiManager, я не думаю, что вам нужен Context API. Просто создайте экземпляр и экспортируйте/импортируйте его в нужные вам файлы.setSessionToken для установки/обновления sessionToken при загрузке приложения или когда пользователь получает/обновляет его.redux-presist (даже если вы решите использовать Context API), если Redux не задействован. Если вы хотите сохранить sessionToken, сохраните его в localStorage или любом другом хранилище, которое вы хотите, у него есть простой API для установки/получения значений, вам не нужно использовать для этого библиотеку.