【问题标题】:React Native authorization with Apollo: create client with token. Cannot set token to header使用 Apollo 进行本地授权:使用令牌创建客户端。无法将令牌设置为标头
【发布时间】:2020-03-25 06:08:28
【问题描述】:
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 error: notoken。是不是我做错了什么?

【问题讨论】:

    标签: react-native authentication graphql apollo apollo-client


    【解决方案1】:

    您正在初始化您的客户端并异步更改它,但您的组件没有重新渲染。所以你有两个选择:

    useState 让你的应用重新渲染

    调用forceUpdate函数

    【讨论】:

      猜你喜欢
      • 2020-12-16
      • 2015-01-15
      • 2020-01-24
      • 2021-01-15
      • 2019-12-24
      • 1970-01-01
      • 2018-12-01
      • 2023-04-08
      • 2019-12-15
      相关资源
      最近更新 更多