函数在setTimeout(shouldComponentUpdate)后返回true

时间:2017-04-19 07:39:46

标签: reactjs

在超时后我想要一个函数return true。可以这样做吗?

我想在反应shouldComponentUpdate()方法中使用它。返回true时,将呈现Component。我想让它在超时后呈现。

到目前为止我发现的是这个,但它没有按预期工作:

shouldComponentUpdate(nextProps, nextState) {
  var promise = new Promise(function(resolve, reject) {
    window.setTimeout(function() {
      resolve(true);
    }, 3000);
  });
  return promise;
}

shouldComponentUpdate()应在{3}后return true

1 个答案:

答案 0 :(得分:1)

shouldComponentUpdate必须立即返回一个布尔值。它应该是同步和快速的。

通常,如果你想要像动画那样进行一些真正的DOM操作,你可以在componentDidUpdate()中进行操作。

但似乎你想要重新渲染之前的动画 。如果您的组件完全依赖于道具,最简单的方法是将动画代码放在componentWillReceiveProps()中,只需在false中返回shouldComponentUpdate()即可。在动画之后,您调用this.forceUpdate()强制重新渲染。

我能想象的另一种方法是用另一个组件包装你的组件。当您有更新时,父级将保持更改3秒并执行动画。之后,父母将新道具传递给孩子。

(对于解决方案1,使用shouldComponentUpdate代替componentWillReceiveProps也可以,但componentWillReceiveProps对我来说更好看)