从另一个“ UseEffect”中“调用” UseEffect

时间:2020-05-15 01:47:19

标签: javascript reactjs 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能够执行,但不是...

1 个答案:

答案 0 :(得分:0)

只有在selectedDay更改的情况下,才能重新设置useEffect的使用方式。如果要使其在执行setInfoViewAction时运行,请将viewInfoAction添加到依赖项中。

更好,因为所有这些都与同一个sideEffect相关。通过删除第二个useEffect并将其内部的代码添加到第一个useEffect中,可以简化您的代码。这主要是因为您可以将所有相关的副作用逻辑放在一起。