【发布时间】:2021-07-18 21:10:51
【问题描述】:
我是 React 钩子的新手,我不确定如何实现以下目标。假设我有state1 和state2,我使用useEffect 挂钩调用asyncFn1 并更新state1。
现在我想等待state1 更改并使用state1 值调用asyncFn2 并更新state1 和state2。这个asnycFn1 和asyncFn2 只能调用一次。
如果我只是使用另一个useEffect 来调用asyncFn2,我不会得到state1 的值。我该如何解决?
const [state1, setState1] = useState(null);
const [state2, setState2] = useState(null);
const asyncFn1 = async() => {
// async call to get state 1 data
// setState1
}
const asyncFn2 = async(_state1) => {
// use state1 data to make async call to get state 2 data
// state2 data will be used to update both state1 and state2
}
useEffect(() => {
asyncFn1();
}, [])
【问题讨论】:
-
为什么要从
asyncFn2更新state1?_state1到asyncFn2的输入是否与您要调用setState1的状态不同? -
参见stackoverflow.com/questions/59492626/…,同样的逻辑,有一个充当“调用一次”标志的 ref。
-
@PatrickRoberts 是的,状态 1 将导致不同的 asyncFn2 结果,该结果将用于再次更新 state1。
-
@DennisVash 谢谢! useRef 正是我所需要的。
标签: javascript reactjs react-hooks use-effect