Reactjs setTimeout后函数返回true(shouldComponentUpdate)
我想要一个函数在超时后返回true。这能做到吗 我想在reactsReactjs setTimeout后函数返回true(shouldComponentUpdate),reactjs,Reactjs,我想要一个函数在超时后返回true。这能做到吗 我想在reactsshouldComponentUpdate()方法中使用它。当返回true时,将呈现组件。我希望它在超时后渲染 到目前为止,我发现这一点,但它并没有像预期的那样起作用: shouldComponentUpdate(nextProps, nextState) { var promise = new Promise(function(resolve, reject) { window.setTimeout(function
shouldComponentUpdate()
方法中使用它。当返回true
时,将呈现组件。我希望它在超时后渲染
到目前为止,我发现这一点,但它并没有像预期的那样起作用:
shouldComponentUpdate(nextProps, nextState) {
var promise = new Promise(function(resolve, reject) {
window.setTimeout(function() {
resolve(true);
}, 3000);
});
return promise;
}
shouldComponentUpdate()
应在3秒后返回true
。shouldComponentUpdate
必须立即返回布尔值。它应该是同步和快速的
通常,如果您想进行一些真正的DOM操作(如动画),可以在componentdiddupdate()
中进行
但是,您似乎希望在重新渲染之前播放动画。如果组件完全依赖于道具,最简单的方法是将动画代码放入componentWillReceiveProps()
,然后在shouldComponentUpdate()
中返回false
。动画完成后,调用this.forceUpdate()
强制重新渲染
我可以想象的另一种方式是用另一个组件包装组件。当你有一个更新,然后家长将保持3秒的变化,并做动画。之后,父母将新道具传给孩子
(对于解决方案1,使用
shouldComponentUpdate
而不是componentWillReceiveProps
也可以,但是componentWillReceiveProps
在我看来更合适)您这样做的目的是什么shouldComponentUpdate
应该是同步的。是否尝试执行轮询之类的操作?我想延迟渲染,以便为组件设置动画。如果组件在这个延迟期间得到了更新,我想重置它,而不是重新排序多次。