首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个' UseEffect‘调用’UseEffect‘

从另一个' UseEffect‘调用’UseEffect‘
EN

Stack Overflow用户
提问于 2020-05-15 09:47:19
回答 1查看 45关注 0票数 0

我正在学习react native,我正在编写一个简单的应用程序来注册每天的睡眠时间。

当添加新寄存器的按钮被按下时,我这样做

代码语言:javascript
复制
onPress={() => setUpdateAction(true)}

这会更改updateAction的值:

const updateAction,setUpdateAction = useState(false);

当updateAction的值改变时,这将被执行:

代码语言:javascript
复制
useEffect(() => {

    ... code that add's the register to an array

    setviewInfoAction(true);
    setUpdateAction(false);
}, [updateAction]);

在内部,我调用了setviewInfoAction(true);,因为我想要更改与插入的值一起显示的值。

代码语言:javascript
复制
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,但它不是……

EN

回答 1

Stack Overflow用户

发布于 2020-05-15 11:22:33

只有当selectedDay改变时,你设置useEffect的方式才会重新运行。如果您想让它在执行setInfoViewAction时运行,请将viewInfoAction添加到依赖项中。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61810355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档