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

时间:2016-06-15 17:39:54

标签: 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();
  }
}})

1 个答案:

答案 0 :(得分:1)

我认为你可以默认为构造函数创建属性= false,例如。 didMount,didUpdate。并且componentDidMount只会被调用一次,因此您可以放置​​this.didMount = true; 每次更新后都会调用componentDidUpdate,因此您需要进行检查:!this.didUpdate = (this.didUpdate = true); 然后只检查这些属性;