我有一系列事件必须依赖于先前事件的执行来发生。
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
更改时都会运行。我希望仅在getToken
运行并检索token
时发生“最终事件”。
我相信setToken
设置器的异步性质不会及时发生,因此无法设置token
来满足if statement
的条件。因此,最终事件永远不会在第一次运行时执行。
答案 0 :(得分:3)
您可以添加另一个useEffect
钩子,该钩子专门用于查找令牌的更改。
useEffect(() => {
getToken();
}, [postAction]);
useEffect(() => {
if(token) {
console.log("the final event")
}
}, [token]);
答案 1 :(得分:0)
const [token, setToken] = useState('');
useEffect(() => {
async getToken(){
try {
const newToken = await AsyncStorage.getItem(LOGIN_TOKEN);
setToken(newToken);
} catch (err) {
throw new Error(err)
}
}
getToken();
}, [token])