javascript - 类似 componentDidUpdate 的事件,但只触发一次

标签 javascript reactjs

我有一些组件应该在它们的数据到达并首次呈现后立即做一些工作,但不会为将来的重新呈现做准备。例如:加载和呈现评论,现在 1. 加载社交媒体库和 2. 加载一些 Google Analytics。

现在我是这样做的:

componentDidUpdate: function (prevProps, prevState) {
    if (this.hasAlreadyUpdatedOnce) {
        // ... do some stuff...
    } else {
        // ... do some stuff that should happen only once...
        // 1. load social media libraries
        // 2. load some Google Analytics
        this.hasAlreadyUpdatedOnce = true;
    }
}

但我在问自己是否有比设置这样的属性更优雅的方法。

最佳答案

假设您正在响应状态更改,您应该将回调作为第二个参数传递给 setState。

componentDidMount: function(){
  ajaxyThing(function(data){
    this.setState({data: data}, function(){
      // this.state is updated, the component has rerendered 
      // and the dom is current
    });
  }.bind(this));
}

关于javascript - 类似 componentDidUpdate 的事件,但只触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28419276/

相关文章:

javascript - expo 文档选择器未显示上传文件

JavaScript if else 在全日历上设置事件颜色的条件不起作用

javascript - 如何在 React.js 中将带有 jsx 的 html 转换为 jsx

javascript - 如何访问不同组件中的存储?

reactjs - 使用 react 组件中的 Electron API

javascript - AngularJS 指令将 n 个元素的数组呈现为每个 m 行的表

javascript - 在另一个组件中使用独立的 GeoJson 示例代码是否有特定要求?

javascript - 我需要服务器时间,而不是本地时间 (JavaScript)

javascript - 使用 fetch api 发送获取请求失败

javascript - 失败的 Prop 类型 : Invalid prop `component` of type `object` supplied to `Route` , 预期 `function`