在超时后我想要一个函数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
。
答案 0 :(得分:1)
shouldComponentUpdate
必须立即返回一个布尔值。它应该是同步和快速的。
通常,如果你想要像动画那样进行一些真正的DOM操作,你可以在componentDidUpdate()
中进行操作。
但似乎你想要重新渲染之前的动画 。如果您的组件完全依赖于道具,最简单的方法是将动画代码放在componentWillReceiveProps()
中,只需在false
中返回shouldComponentUpdate()
即可。在动画之后,您调用this.forceUpdate()
强制重新渲染。
我能想象的另一种方法是用另一个组件包装你的组件。当您有更新时,父级将保持更改3秒并执行动画。之后,父母将新道具传递给孩子。
(对于解决方案1,使用shouldComponentUpdate
代替componentWillReceiveProps
也可以,但componentWillReceiveProps
对我来说更好看)