我已经创建了一个NPM库,它共享多个util函数.其中之一就是给我们的终端打电话.我已经在我的NPM库中包含了Axios,但我无法在全局设置Axios.create
个实例.
我最初以为我可以创建一个Provider
并设置一个context
,但是,因为我的API函数不在钩子中,所以我无法访问上下文.这是我第一个如此不熟悉什么是最佳实践的NPM库.
// Provider.ts
export default function Provider({ children, config }: ProviderProps) {
window.config = config;
return (
<ContextConfig.Provider value={config}>{children}</ContextConfig.Provider>
);
}
在上面,我try 使用上下文API、设置全局变量等.
// api.ts
import Axios, { AxiosInstance, AxiosPromise, Cancel } from 'axios';
const axiosInstance = Axios.create(window.config);
const api = (axios: AxiosInstance) => ({
get: <T>(url: string, config: ApiRequestConfig = {}) =>
withLogger<T>(withAbort<T>(axios.get)(url, config)),
});
export default api(axiosInstance)
上图中,试图使用全局变量window.config
,但它是undefined
.我还try 将导出转换为挂钩以允许读取上下文,但遇到了有关挂钩不安全使用的错误.
// index.ts
import api from './api';
import Provider from './Provider';
export { api, Provider };
我现在唯一能想到处理这一问题的方法是使用本地存储,这是非常开放的建议.
干杯