Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.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
Javascript 另一个钩子中的上下文值具有旧值_Javascript_Reactjs_React Hooks_React Context - Fatal编程技术网

Javascript 另一个钩子中的上下文值具有旧值

Javascript 另一个钩子中的上下文值具有旧值,javascript,reactjs,react-hooks,react-context,Javascript,Reactjs,React Hooks,React Context,我有不同的钩子文件,我将授权变量存储在全局上下文中。在大多数情况下,我会在整个应用程序中获取当前值。但是在我的引导(useffect hook)中,我查看授权代码是否在本地存储中并将其保存在状态中,我只在authhook文件中获得当前授权值。试图通过上下文访问授权值的其他文件中的钩子会得到一个旧值(未定义)。为什么会这样 我知道永远不会在存储中保存authorizationtoken,我们将重构它,但现在对于这个问题,我认为这是另一个值,我试图理解这个问题 这是缩短的示例代码(钩子上没有返回,没

我有不同的钩子文件,我将授权变量存储在全局上下文中。在大多数情况下,我会在整个应用程序中获取当前值。但是在我的引导(useffect hook)中,我查看授权代码是否在本地存储中并将其保存在状态中,我只在authhook文件中获得当前授权值。试图通过上下文访问授权值的其他文件中的钩子会得到一个旧值(未定义)。为什么会这样

我知道永远不会在存储中保存authorizationtoken,我们将重构它,但现在对于这个问题,我认为这是另一个值,我试图理解这个问题

这是缩短的示例代码(钩子上没有返回,没有定义的上下文):

Main.tsx

export const Main=()=>{
const{bootstrap,authorizationToken}=useContext(AuthContext)
useffect(()=>{
const execBootstrap=async()=>{
等待引导
}
execBootstrap()
//eslint禁用下一行react HOOK/deps
},[authorizationToken])
}
authook.ts

export const useAuth=()=>{
const[authorizationToken,setAuthorizationToken]=useState()
const{fetchAdmin}=usePublic()
const bootstrap=useCallback(异步()=>{
fetchPublicAdmin()//authorizationToken=>有效
},[fetchPublicAdmin])
const storeAuthorizationTokenData=useCallback(
(令牌:AccessToken | IdToken)=>{
setAuthorizationToken(令牌)
},
[],
)
useffect(()=>{
const storage=localStorage.getItem(storageKeyAuthorizationTokenData
storeAuthorizationTokenData(存储))
},[storeAuthorizationToken])
}
publicHook.ts

export const usePublic=()=>{
const{authorizationToken}=useContext(AuthContext)
const fetchPublicTenant=useCallback(
异步()=>{
//authorizationToken==>未定义
等待sendRequest('publicAdmin')
},
[sendRequest,authorizationToken],
)
}

如果您仍然存在此问题,请显示更多相关代码或创建一个沙盒来演示此问题,因为这样更容易帮助您