#javascript #react-native #apollo #react-apollo
#javascript #react-native #apollo #react-apollo
Вопрос:
«react-apollo»: «3.1.5»,
«react-native»: «https://github.com/expo/react-native/archive/sdk-38.0.2.tar.gz «
«expo»: «38.0.0»
Я пытаюсь получить свой URL-адрес из локального AsyncStorage (в основном по той причине, что мой URL-адрес выбирается из двух URL-адресов после входа в систему и присваивается AsyncStorage). Вот что я уже пробовал, но все время получаю неопределенные данные
const asyncHttpLink = setContext(async (_, {headers, ...context}) => {
const url = await getUrlFromAsyncStorage();
return createHttpLink({
uri: url ? url : '',
...context,
});
});
затем я назначаю его в свой Appolo
const client = new ApolloClient({
... other property as cache, type etc. ...
link: ApolloLink.from([
... other links ...
asyncHttpLink,
]),
});
в ответ я получаю все свойства, кроме данных, которые всегда не определены
[
"variables",
"refetch",
... other 7 ...,
"error",
"called",
"data", <== always undefined
"client",
]
но если я использую стандартную createHttpLink, все начинает работать просто отлично
const httpLink = createHttpLink({
uri: desiredUrl,
});
кто-нибудь преследовал ту же ситуацию?
Ответ №1:
Я нашел решение:
const customFetch = async (_: string, options: RequestInit) => {
const url = await getUrlFromAsyncStorage();
return url ? fetch(url, options) : fetch('');
};
const asyncHttpLink = createHttpLink({
fetch: customFetch,
});