Javascript 是否可以从钩子内部导出状态值?

Javascript 是否可以从钩子内部导出状态值?,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我有以下的钩子: const useAuth = () => { const [auth, setAuth] = useState({ isAuthenticated: false, accountType: 'anonymous', userId: '', email: '' }); const signIn = () => { // Do something... setAuth({ isAuthenti

我有以下的钩子:

const useAuth = () => {
  const [auth, setAuth] = useState({
    isAuthenticated: false,
    accountType: 'anonymous',
    userId: '',
    email: ''
  });

  const signIn = () => {
    // Do something...

    setAuth({
      isAuthenticated: true,
      accountType: 'email',
      userId: 'abc123',
      email: 'foo@bar.com'
    });
  }


  return {
    signIn,
    auth
  };
};

export default useAuth;
如您所见,我正在导出
auth
状态值,但它似乎不起作用。在我使用这个钩子的组件中,
auth
的值是原始值:

{
  isAuthenticated: false,
  accountType: 'anonymous',
  userId: '',
  email: ''
}
即使我调用
signIn()
方法,该方法应将此值更新为:

{
  isAuthenticated: true,
  accountType: 'email',
  userId: 'abc123',
  email: 'foo@bar.com'
}

更新的值没有到达使用钩子的组件(即使它成功地更新了钩子中的状态值),如何使用钩子在组件中获取更新的值?

调用
signIn()
后如何检查
auth
的值?由于
setAuth()
(在signIn内部调用)可以是异步的,因此您可能正在更新
auth
之前记录它?为了确认调用
signIn()
auth
被成功更新,我有`useffect(()=>{console.log('[auth updated]',auth);},[auth])`在钩子里面。我只是查看最后一个控制台日志,在使用钩子的组件中,我有
const{auth,signIn}=useAuth()
并使用
auth
作为上下文提供程序的值。我在react devtools context viewer中看不到更新的值,我还在渲染中查看了日志
auth
,并且在值更新后看不到任何重新渲染。您谈论的是某种身份验证上下文提供程序。听起来您有两个独立的
auth
状态。我使用钩子中的
auth
状态值作为auth上下文的值。钩子管理上下文的值。调用
signIn()
后,如何检查
auth
的值?由于
setAuth()
(在signIn内部调用)可以是异步的,因此您可能正在更新
auth
之前记录它?为了确认调用
signIn()
auth
被成功更新,我有`useffect(()=>{console.log('[auth updated]',auth);},[auth])`在钩子里面。我只是查看最后一个控制台日志,在使用钩子的组件中,我有
const{auth,signIn}=useAuth()
并使用
auth
作为上下文提供程序的值。我在react devtools context viewer中看不到更新的值,我还在渲染中查看了日志
auth
,并且在值更新后看不到任何重新渲染。您谈论的是某种身份验证上下文提供程序。听起来您有两个独立的
auth
状态。我使用钩子中的
auth
状态值作为auth上下文的值。钩子管理上下文的值。