当前位置: 首页 > 面试题库 >

React.js-componentWillReceiveProps被击中两次

干亮
2023-03-14
问题内容

我有一个像这样呈现的React.js组件:

    <Social email={this.state.email} />;

页面上有一些事件会更新this.state.email,结果是经过渲染,这会将新的emailprop 发送到Social组件。

在此Social组件中,我正在侦听这样的更新:

  componentWillReceiveProps: function(nextProps) {
    console.log('received props update', nextProps.email);
    this.doSomeWork();
  }

该控制台行被渲染两次,这使UI两次闪烁,同时调用社交网络。

我总是可以做这样的事情:

    if (nextProps.email != this.props.email) {
      this.doSomeWork();
    }

但是感觉有点…

是否会出现双重消息?如果是这样,好奇为什么?

如果没有,找到并消除它的最佳方法是什么?


问题答案:

您的Social组件可能被渲染两次,因为setState在父组件上被调用了两次。它可能设置了其他属性,email但您的render函数被调用,因此Social组件将渲染两次。

您可以shouldComponentUpdateSocial组件中实现方法以防止第二次渲染:

shouldComponentUpdate: function(nextProps, nextState) {
    return nextProps.email != this.props.email;
}


 类似资料:
  • 当我转到<代码>/银行/1我看到了预期的账户信息。很好,很好。 当我转到<代码>/银行/1/description我看到了描述(好),但我也看到了帐户信息(不好)。 我习惯了Spring的,如果多个路径匹配,事情就会中断——但即便如此,AFAIK,在我的代码中,无论如何只有一个应该匹配? 银行。Java语言 帐户ction.java 日志输出:

  • 我有一个React.js组件,它被渲染成这样: 页面上有一些事件更新了此。状态电子邮件,因此,执行render,它会向组件发送一封新的道具。 在这个组件中,我正在监听这样的更新: 控制台行被渲染两次,这使得UI在调用社交网络时闪烁两次。 我总是可以做这样的事情: 但是感觉有点不舒服。。。 双重信息在意料之中吗?如果是这样,好奇为什么? 如果没有,追踪和消除它的最佳方法是什么?

  • 嗨,我有下面的代码给了我奇怪的行为 按钮cont_btn是bootstrap 2模式上的一个按钮。它包含一个继续按钮和一个关闭按钮。 如果我选择close按钮或单击modal外部以将其取消,然后重新打开modal,则函数将被调用两次。 我试过使用 并且我在 click不会被调用两次。在调试期间,我发现脚本重新进入 在页面加载中,我看到 但代码没有进入函数,它将跳到关闭按钮。我想这是正在初始化的两个

  • 我读在初始渲染时只被调用一次,但我看到它被渲染了多次。 似乎我创建了一个递归循环。 组件didMount调度动作来获取数据 一旦接收到数据,它就会触发成功操作,将数据存储在redux状态。 父反应组件连接到redux存储,并且具有mapStateToProps用于刚刚在上述步骤中更改的条目 父渲染子组件(通过变量编程选择) 子组件的组件didMount再次被调用 它消除了获取数据的操作 我想这就是

  • 问题内容: 下面是我的部分代码,但我的问题很简单,当用户单击“我”时如何对我的函数说data-id =“ 1” ? 问题答案: 由于您已经在使用ES6- 在这里使用箭头功能可能会更干净一些:

  • 问题内容: 我在Go中关注一个简单的Web服务器示例。 我插入了一条语句,使生成的代码如下所示: 问题是,每当我在Web浏览器中加载端口8000时,此函数就会被调用两次。这是一个问题,因为我打算在每次页面访问时增加一个计数器。通过这种行为,计数器将增加两次。OTOH,如果我这样做,它只会被调用一次。 我觉得我在这里失踪真的很愚蠢。 问题答案: 只需记录请求。您将意识到您的浏览器还请求/favico