如何使用 Auth0 SDK 注销? "You forgot to wrap your component in <Auth0Provider>"
How to logout with Auth0 SDK? "You forgot to wrap your component in <Auth0Provider>"
我正在使用 useAuth0()
挂钩中的 logout
函数注销。但是,当我尝试使用它时,出现以下错误
Error: "You forgot to wrap your component in <Auth0Provider>"
但是,它包含在 Auth0Provider 中,所以我不确定是什么导致了这个错误。
const { logout } = useAuth0();
return (
<Auth0Provider
domain={redacted}
clientId={redacted}
redirectUri={redacted}
audience={redacted}
cacheLocation="localstorage"
>
<GlobalCss />
<AuthGuard>
<AuthorizedApolloProvider>
<BaseToolbar css={{justifyContent: 'space-between'}}>
<ToolbarToggleGroup type="multiple">
<ToolbarToggleItem
value="Users/Search"
onClick={() => router.push('/user')}
>
Users/Search
</ToolbarToggleItem>
</ToolbarToggleGroup>
<ToolbarToggleGroup type="multiple">
<ToolbarToggleItem
value="Logout"
// here is where i logout
onClick={() => logout({ returnTo: window.location.origin })}
>
Logout
</ToolbarToggleItem>
</ToolbarToggleGroup>
</BaseToolbar>
<DefaultHead />
<Component {...pageProps} />
</AuthorizedApolloProvider>
</AuthGuard>
</Auth0Provider>
)
您从中调用 useAuth0
的组件在 Auth0Provider
之外,因为 Auth0Provider
是它的子组件。您需要从包含在 Provider 中的组件调用 useAuth0
。
例如,您可以重构 ToolbarToggleItem
组件以将 logoutDestination
作为 prop 而不是 onClick
函数。然后,在ToolbarToggleItem
内部,在函数组件的body中调用useAuth0
得到logout
函数
在你的 ToolbarToggleItem
的 return 中,你可以有一个 onPress
看起来像:
onPress={() => logout({ returnTo: logoutDestination })
在处理触摸的组件上。
我正在使用 useAuth0()
挂钩中的 logout
函数注销。但是,当我尝试使用它时,出现以下错误
Error: "You forgot to wrap your component in <Auth0Provider>"
但是,它包含在 Auth0Provider 中,所以我不确定是什么导致了这个错误。
const { logout } = useAuth0();
return (
<Auth0Provider
domain={redacted}
clientId={redacted}
redirectUri={redacted}
audience={redacted}
cacheLocation="localstorage"
>
<GlobalCss />
<AuthGuard>
<AuthorizedApolloProvider>
<BaseToolbar css={{justifyContent: 'space-between'}}>
<ToolbarToggleGroup type="multiple">
<ToolbarToggleItem
value="Users/Search"
onClick={() => router.push('/user')}
>
Users/Search
</ToolbarToggleItem>
</ToolbarToggleGroup>
<ToolbarToggleGroup type="multiple">
<ToolbarToggleItem
value="Logout"
// here is where i logout
onClick={() => logout({ returnTo: window.location.origin })}
>
Logout
</ToolbarToggleItem>
</ToolbarToggleGroup>
</BaseToolbar>
<DefaultHead />
<Component {...pageProps} />
</AuthorizedApolloProvider>
</AuthGuard>
</Auth0Provider>
)
您从中调用 useAuth0
的组件在 Auth0Provider
之外,因为 Auth0Provider
是它的子组件。您需要从包含在 Provider 中的组件调用 useAuth0
。
例如,您可以重构 ToolbarToggleItem
组件以将 logoutDestination
作为 prop 而不是 onClick
函数。然后,在ToolbarToggleItem
内部,在函数组件的body中调用useAuth0
得到logout
函数
在你的 ToolbarToggleItem
的 return 中,你可以有一个 onPress
看起来像:
onPress={() => logout({ returnTo: logoutDestination })
在处理触摸的组件上。