如何 运行 有条件地使用取决于同一循环中的状态的效果

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]);