javascript - 确保在 componentDidUpdate() 和 componentDidMount() 中只运行一次

标签 javascript jquery meteor reactjs

如果我有一个初始化某些东西(如 jQuery 小部件)的方法,我如何确保初始化只被调用一次,但在刷新和导航到该页面而不刷新时被调用。我目前的做法如下:

//  key used to make sure initialize() only runs in one of DidUpdate/DidMount
let key = 0;

Component = React.createClass({
  mixins: [ReactMeteorData],
  hasKey() {
    return key;
  },
  getKey() {
    key = 1;
  },
  resetKey() {
    key = 0;
  },
  componentDidUpdate() {
    if (!(this.hasKey())) {
      initialize()();
      this.getKey();
    }
  },
  componentDidMount() {
    if (!(this.hasKey())) {
      initialize()();
      this.getKey();
    }
  },
  componentWillUnmount() {
    this.resetKey();
  }
}})

最佳答案

我认为您可以在默认情况下将属性创建到构造函数中 = false,例如。做了挂载,做了更新。 componentDidMount 只会被调用一次,所以你可以把 this.didMount = true; componentDidUpdate 每次更新后都会被调用,所以你必须检查: !this.didUpdate = (this.didUpdate = true); 然后只检查这些属性;

关于javascript - 确保在 componentDidUpdate() 和 componentDidMount() 中只运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37842200/

相关文章:

javascript - 如何使用 Javascript 图像裁剪器保存 "Croppie"

javascript - meteor 辅助函数、lambda 和词法 this

javascript - 为 JavaScript 中的更多参数扩展函数

javascript - 提交表单并使用快照检索数据后,防止在未经身份验证的情况下在 Firebase 应用程序中重复邮件 ID 和电话号码

jquery - 使用 jQuery.animate 在 Adob​​e AIR 中制作动画

jquery - 元素在列中向前移动

meteor - 有没有一种好的方法可以将每个 Meteor.user 包装在具有原型(prototype)函数等的对象中?

javascript - meteor 如何检索集合对象的属性值

javascript - 我如何使用 jQuery 查找元素是否包含特定类?

javascript - 当meteor方法抛出错误时如何刷新客户端值?