用Apollo响应本机授权:使用令牌创建客户端。无法将令牌设置为标头

let [loading,setLoading] = useState(true);
let client = new ApolloClient({
    uri: 'https://39990dea.ngrok.io/graphql',});

let init = async () => {
    let token = await AsyncStorage.getItem('token');
    if (!!token) {
        store.dispatch(userLoaded(token));
        client = new ApolloClient({
            request: (operation) => {
                operation.setContext({
                    headers: {
                        authorization: token ? token : '',},});
            },});
        console.warn('user with token created');
        console.warn(token);
        console.warn('token is taken');
    }
    setLoading(false);
};
useEffect(init,[]);

我正在创建apollo客户端。然后,如果AsyncStorage中有令牌,则设置标头以请求令牌。

return (
<ApolloProvider client={client}>
    <Provider store={store}>
        <AppNavigator/>
    </Provider>
</ApolloProvider>

);

但是当我发出请求时,出现Graphql错误:未显示。我在做错什么吗?

ASD52113144 回答:用Apollo响应本机授权:使用令牌创建客户端。无法将令牌设置为标头

您正在初始化客户端并异步更改它,但是您的组件没有重新呈现。因此,您有两种选择:

  

useState,以便您的应用重新呈现

  

调用forceUpdate函数

本文链接:https://www.f2er.com/3006129.html

大家都在问