如何 运行 有条件地使用取决于同一循环中的状态的效果
How to run useEffect conditionally that depends on the state from the same cycle
我有一系列事件必须发生,其中一个事件依赖于前一个事件的执行。
const [token, setToken] = useState('')
const getToken = async () => {
try {
const newToken = await AsyncStorage.getItem(LOGIN_TOKEN)
setToken(newToken)
} catch (err) {
throw new Error(err)
}
}
useEffect(() => {
getToken()
if(token) {
console.log("the final event")
}
}, [postAction])
我有 useEffect
挂钩,每次 postAction
更改时 运行s。我希望 "final event" 仅在 getToken
运行 时发生并检索 token
。
我相信 setToken
setter 的异步性质没有及时发生,以便设置 token
以满足 if statement
的条件。因此,最终事件永远不会在第一个 运行 上执行。
您可以添加另一个 useEffect
挂钩,专门查找令牌的更改。
useEffect(() => {
getToken();
}, [postAction]);
useEffect(() => {
if(token) {
console.log("the final event")
}
}, [token]);
我有一系列事件必须发生,其中一个事件依赖于前一个事件的执行。
const [token, setToken] = useState('')
const getToken = async () => {
try {
const newToken = await AsyncStorage.getItem(LOGIN_TOKEN)
setToken(newToken)
} catch (err) {
throw new Error(err)
}
}
useEffect(() => {
getToken()
if(token) {
console.log("the final event")
}
}, [postAction])
我有 useEffect
挂钩,每次 postAction
更改时 运行s。我希望 "final event" 仅在 getToken
运行 时发生并检索 token
。
我相信 setToken
setter 的异步性质没有及时发生,以便设置 token
以满足 if statement
的条件。因此,最终事件永远不会在第一个 运行 上执行。
您可以添加另一个 useEffect
挂钩,专门查找令牌的更改。
useEffect(() => {
getToken();
}, [postAction]);
useEffect(() => {
if(token) {
console.log("the final event")
}
}, [token]);