首页 > 解决方案 > 标题有问题 apollo grapgql

问题描述

我一直在尝试添加标头,但不断收到错误“jwt malformed”,并且我做了一些研究,有些人说如果您将 null 添加到令牌值,它将返回“jwt malformed”,这是一些代码

const authLink = setContext(async (req, { headers }) => {
  const token = await AsyncStorage.getItem("token")

  return {
    ...headers,
    headers: {
      Authorization: token ? `Bearer ${token}` : null
    }
  }
})

const token = AsyncStorage.getItem("token")


export const client = new ApolloClient({
  link: authLink.concat(new HttpLink({ uri: "https://xxxxx.xxxxxx.xxx/" })),
  cache: new InMemoryCache()
})

但我不知道是我的标题是问题还是我的根组件是问题,在我的根组件中,我试图为已经登录的用户创建受保护的路由,代码如下


    const { data, error, loading } = useQuery(ME_QUERY)
    if (loading) return <Text>loading..</Text>
    if (error) return <Text>{error.message}</Text>
    if(!data.me) return (
        
        <NavigationContainer>
            <Stack.Navigator initialRouteName="Login">
                        <Stack.Screen name="Landing" component={Landing} options={{ headerShown: false }} />
                        <Stack.Screen name="Register" component={Signup} options={{ headerShown: false }} />
                        <Stack.Screen name="Login" component={Login} options={{ headerShown: false }} />
            </Stack.Navigator>
        </NavigationContainer>
    )
    
    return (


        <NavigationContainer>
            <Stack.Navigator initialRouteName="home">
                        <Stack.Screen name="Landing" component={Landing} options={{ headerShown: false }} />
                        <Stack.Screen name="Register" component={Signup} options={{ headerShown: false }} />
                        <Stack.Screen name="Login" component={Login} options={{ headerShown: false }} />
                        <Stack.Screen name="home" component={Home} options={{ headerShown: false }} />
            </Stack.Navigator>
        </NavigationContainer>
    )
    }

但是我被困在这个问题上一分钟了,这有点令人沮丧,请帮忙

标签: react-nativegraphqljwtapollo-client

解决方案


推荐阅读