我有一个数组,现在我要在某些条件下使用setState()在其中添加项目,我想移至另一个屏幕,但仅在将项目添加到数组中之后。所有项都已成功添加,但是当一种情况变为真时,它将被重定向到下一个屏幕,然后更新状态。
在数组中添加项目:
setAnswers(prevState => ([...prevState, { question: question, answers: answer,selectedAnswer:item, action: action }]))
我要重定向的条件:
if (answerStore[item].endpoint) {
navigation.navigate("InjurySummary", { answers: answers, endpoint: answerStore[item].endpoint })
}
现在由于数组的最后一项没有被添加,因为它如此快地移动到下一个屏幕。状态更新后,是否有任何方法可以重定向到下一个屏幕。
注意:我正在使用功能组件
答案 0 :(得分:1)
您可以使用useEffect
钩子,每次状态更新时都会遇到该钩子。
useEffect(() => {
// write your logic here,if you want to perfom any task when answers updated
}, [answers])
useEffect
钩子有2个参数,第一个是回调函数,第二个是依赖项数组,它将继续监视您的依赖项并在依赖项更新时遇到。