Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 使用Apollo响应本机授权:使用令牌创建客户端。无法将令牌设置为标头_React Native_Authentication_Graphql_Apollo_Apollo Client - Fatal编程技术网

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

React native 使用Apollo响应本机授权:使用令牌创建客户端。无法将令牌设置为标头,react-native,authentication,graphql,apollo,apollo-client,React Native,Authentication,Graphql,Apollo,Apollo Client,在那里,我正在创建阿波罗客户端。然后,如果异步存储中有令牌,我将头设置为带有令牌的请求 let [loading, setLoading] = useState(true); let client = new ApolloClient({ uri: 'https://39990dea.ngrok.io/graphql', }); let init = async () => { let token = await AsyncStorage.getItem('token')

在那里,我正在创建阿波罗客户端。然后,如果异步存储中有令牌,我将头设置为带有令牌的请求

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, []);
返回(
))


但当我发出请求时,就会出现Graphql错误:notoken。有什么我做错了吗?

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

使用状态,以便重新呈现应用程序

调用
forceUpdate
函数

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