我正在编写一个 Next.js 项目,并使用 GitHub 和实现身份验证next-auth
。在以下示例中next-auth
,有一个电话useSession()
,它返回两个对象:session
and loading
。然而,我见过的例子都没有实际使用loading
object.
import React from 'react'
import {
useSession,
signin,
signout
} from 'next-auth/client'
export default () => {
const [ session, loading ] = useSession()
return <p>
{!session && <>
Not signed in <br/>
<button onClick={signin}>Sign in</button>
</>}
{session && <>
Signed in as {session.user.email} <br/>
<button onClick={signout}>Sign out</button>
</>}
</p>
}
Question: 目的是什么loading
,以及在实践中如何使用?
The loading
选项指示会话状态正在更新;这是true
当获取会话数据时以及false
当检查完成时。
它有点复杂,因为session
即使正在加载,属性也可以被填充(例如,因为它已经有一个可以从以前的调用中使用的缓存值),所以从技术上来说session
即使当loading
is true
.
如果使用 NextAuth.js 提供程序pages/_app.js
the session
对象返回自useSession
如果也可以填充getSession()
已被叫入getInitialProps()
or getServerSideProps()
.
如果您有一个活动会话,窗口获得或失去焦点等操作将导致 NextAuth.js 在后台再次检查会话状态,以尝试确保它没有过时。
tl;dr
当你检查时loading
您可能还想检查session
is not null
第一的。如果session
state 是一个对象,用户有一个有效的会话,不需要等待loading
回来。
然而,如果session
is null
and loading
is false
那么他们肯定没有活跃的会话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)