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

React ComponentDidMount被多次调用

唐高朗
2023-03-14

我正在尝试在AccountItem内进行一个fetchapi调用。js像这样:

componentDidMount() {
    // I am calling console.log("item mounted"); here
    var url = "myurl" + this.props.portalId;
    fetch(url)
    .then(res => res.json())
    .then(data => this.setState({account: data.Items}));
}

然后在我的家里。js它呈现:

componentDidMount() {
   console.log("home mounted");
}
render() {
    return (
      <div>
        Account Dashboard
        <AccountItem portalId={this.props.portalId}/>
      </div>
    );
  }
}

我正在将我的fetch记录到控制台中,它被调用了三次。流程是我在登录页面上(加载时挂载一次),我登录,它将我重定向到自己呈现的主页。此时,我在控制台中看到:

Login-mounted//初始加载,现在我再次单击Login-Login-mounted//渲染,然后重定向到主页项目挂载的Home-mounted项目挂载的Home-mounted项目挂载的//为什么会发生3次

我是新的反应,请让我知道如果你需要任何更多的信息。


共有1个答案

丁安宜
2023-03-14

好的,问题出在我的路由器上我正在渲染这个:

<BrowserRouter>
                <div>
                    // Other routes here
                        <this.PrivateRoute path="/home" exact component={<Home .... />} />
                    </Switch>
                </div>
            </BrowserRouter>

我的私人路线是:

PrivateRoute = ({ component: Component, ...rest }) => (
                <Route {...rest} render={() => (
                    this.state.isAuthenticated
                    ? <Component {...this.props} portalId={this.state.portalId}/>
                    : <Redirect to="/" />
                )}/> 
            )

所以这个家被渲染了多次。我只是简单地交换了

 类似资料:
  • 我试图为BillingClient v.2.2.0和Kotlin协同程序编写一个包装: 正如您所见,当我试图查询购买或购买时,我确保客户已经准备好。但在生产中存在许多错误: 我试图了解问题的原因,得到了if将被多次调用。可能存在异常。我一直想知道这是怎么可能的,因为我每次调用都会创建新的侦听器?我无法在emulator或测试设备上重现此问题。有人能解释一下这里发生了什么,以及如何解决吗?

  • 我有一个代码,在那里我处理多个线程。一个线程等待它所依赖的其他一些线程的执行。 线程的运行代码如下所示 很少有其他线程等待这个线程在相同的方法中完成执行,如图所示,通过调用join()来执行run()。 假设这个线程依赖于另外三个线程,它正在等待它们在thread.join()中完成执行。即nameList大小为3,但此线程也执行了3次操作。它在for循环的外部。 我用另一种方法启动这个线程,比如

  • 我在我的应用程序中实现GCM。我已经按照GCM教程中给出的所有步骤从developer.android.com 我能够成功地从GCM获得注册ID,并且我正在将此ID传递给我的应用程序服务器。因此,成功地执行了注册步骤。 现在,当我的应用服务器向我的设备发送PUSH消息时,服务器将获得SUCCESS=8 FAILURE=0等消息,即:服务器成功发送消息,但OnMessage被调用8次取决于成功值。

  • 问题内容: 我知道关于“多次调用getView”的问题很少,但是我的问题没什么不同。 我有一个带有自定义行的自定义listView(使用row_layout.xml)。通常效果很好。最初,我多次调用getView时遇到问题,并使用在stackoverflow中看到的一种方法解决了该问题。(使用’usedPositions’数组)。 现在,我在日志中看到这种情况:getView pos 0,getV

  • 我有一个,它有一个字段,如下所示 我还有几个,它们是继承的的部分。 在其中一个如果这些片断中,我将在片断的方法中进行另一个调用,如下所示 当第一次创建片段时,只调用一次,但片段会转到后台,然后返回,它会被多次调用,这会引起问题。 如有任何帮助,我们将不胜感激。

  • 问题内容: 关于的简单代码。是SessionScoped Bean,是RequestScoped Bean 内 我的问题是被叫很多。会告诉我们该方法在什么阶段被调用。首次加载页面时,请在阶段6-进行约 5次 呼叫。该页面上有一个,因此我在其中键入一些内容,然后单击(命令按钮)。然后在阶段1-> 4期间再呼叫 12次 。每个阶段调用此方法 3-4次 。然后,此属性的get 方法的setter方法(即