我正在学习react native,我正在编写一个简单的应用程序来注册每天的睡眠时间。
当添加新寄存器的按钮被按下时,我这样做
onPress={() => setUpdateAction(true)}这会更改updateAction的值:
const updateAction,setUpdateAction = useState(false);
当updateAction的值改变时,这将被执行:
useEffect(() => {
... code that add's the register to an array
setviewInfoAction(true);
setUpdateAction(false);
}, [updateAction]);在内部,我调用了setviewInfoAction(true);,因为我想要更改与插入的值一起显示的值。
const [viewInfoAction, setviewInfoAction] = useState(false);
useEffect(() => {
console.log("CALLED");
var seted = false;
for (var i = 0; i < registSleep.length; i++) {
if (
registSleep[i].day === selectedDay &&
registSleep[i].month === selectedMonth &&
registSleep[i].year === selectedYear
) {
setSelectedDayHours(registSleep[i].hours);
seted = true;
}
}
if (!seted) {
setSelectedDayHours(0);
}
setviewInfoAction(false);
}, [viewInfoAction]);这样做,我期望执行第二个UseEffect,但它不是……
发布于 2020-05-15 11:22:33
只有当selectedDay改变时,你设置useEffect的方式才会重新运行。如果您想让它在执行setInfoViewAction时运行,请将viewInfoAction添加到依赖项中。
甚至更好,因为所有这些都与相同的sideEffect相关。我将通过删除第二个useEffect并将其中的代码添加到第一个useEffect中来简化您的代码。这主要是因为你可以把所有相关的副作用逻辑放在一起。
https://stackoverflow.com/questions/61810355
复制相似问题