当前位置: 首页 > 知识库问答 >
问题:

使用空依赖关系进行多次渲染

苏胤
2023-03-14

我一直认为带有空依赖项的useEffect只渲染一次。这是我的代码片段,但它呈现了2次:

useEffect(() => {
        let entryDataArray = [];
        for (let i = 0; i < days; ++i) {
            let entryData = [];
            let entries = eventEntryList[i];
            console.log('entries = ', entries);
            for (var j = 0; j < entries.length; ++j) {
                console.log('j = ', j);
                console.log('entries[j] 1111111 = ', entries[j]);
                if (entries[j].runGroup[i] === NOT_ATTENDING) {
                    continue;
                }
                console.log('entries[j] 2222222 = ', entries[j]);
                let entry = {
                    lastName: entries[j].userLastName,
                    firstName: entries[j].userFirstName,
                    email: entries[j].email,
                    carNumber: entries[j].carNumber,
                    paymentMethod: entries[j].paymentMethod,
                    entryFee: entries[j].entryFee,
                    paymentStatus: entries[j].paymentStatus ? 'Paid' : 'Unpaid'
                };
                entryData.push(entry);
            }
            entryDataArray.push(entryData);
        }
        setEntryListArray(entryDataArray);
        setShowLoading(false);
    }, []);

控制台输出显示它渲染了2次。第一次,for循环按其预期工作——“continue”在“if(entries[j].runGroup[i]==NOT_attenting”下工作。第二次,“继续”未执行

我错过什么了吗?

共有2个答案

高正初
2023-03-14

我以为你在开发模式下运行你的应用程序,对吗?。在开发模式下,每次进行更改时,它都会在每次对代码进行更改时重新加载组件。

容俊豪
2023-03-14

需要明确的是:每次装载组件时,都会运行带有空依赖项数组的useEffect。如果您意外地卸下并重新安装了组件,则这可能不止一次。

首先确保你不在StrictMode中,因为这在严格模式下是意料之中的。

如果您未处于严格模式,请在useEffect中包含一个返回函数,该函数将在每次卸载时运行,以检测组件是否正在卸载。

useEffect(() => {

     // your code

    return () => {
    // will run on every unmount.
     console.log("component is unmounting");
    }

}, [])
 类似资料:
  • 编写的PHP扩展需要需要依赖另外一个扩展,在PHP-X中可以调用Extension->require来实现。 PHPX_EXTENSION() { Extension *ext = new Extension("test", "0.0.1"); ext->require("swoole"); ext->require("sockets"); return ext;

  • 依赖关系 这是一个非常轻量级的模块,没有其他依赖项。希望大家在JVM或Android上使用以太坊的RLP编码的项目时会选择使用这个模块,而不再编写自己的实现。

  • 依赖关系 ABI一个非常轻量级的模块,唯一的第三方依赖是 Bouncy Castle,用于hash加密 (Spongy Castle on Android)。 最后希望java和安卓开发者,在JVM或Android上有以太坊ABI合作的项目时会选择使用这个模块,而不是再编写自己的实现。

  • 问题内容: 我有一个依赖关系如下: 当我部署一切正常时,这将拉下另一个引发ClassDefNotFound的依赖项。 我添加了两个依赖项,如下所示: 并且仍然面临着同样的问题,即:MVN带来下来不 我该如何解决? 编辑: 添加; 问题答案: 您可能有一个传递依赖项,另一个依赖项取决于您不需要的版本。 要获得所有直接和传递依赖关系的概述,请尝试: mvn依赖项:树 如果您发现同一依赖项的不同版本之间

  • 问题内容: 我正在运行一个依赖groovy 1.7-beta-1的项目。gmaven插件使用groovy 1.6版作为依赖项。在pom中,我在依赖性管理部分中将grooyv-all版本指定为: 但是,当我在调试模式下运行maven时,我看到groovy 1.6被用于对gmaven插件的依赖。我以为我的依赖项管理部分会重写此设置,因此它们都使用1.7-beta-1,但是由于常规版本不同,我遇到了错误

  • 使用Zookeeper依赖关系 Spring Cloud Zookeeper可以让您提供应用程序的依赖关系作为属性。作为依赖关系,您可以了解Zookeeper中注册的其他应用程序,您可以通过Feign(REST客户端构建器)以及Spring RestTemplate呼叫。 您还可以从Zookeeper依赖关系观察者功能中受益,这些功能可让您控制和监视依赖关系的状态,并决定如何处理。 如何激活Zoo