【发布时间】:2018-10-11 10:13:30
【问题描述】:
我想创建一个类似于 Modal 的组件,它接收一个打开/关闭的布尔值作为道具,然后将该值存储在组件状态中。关闭 Modal 时,我想更新 close boolean prop,但在更新组件状态之前等待几秒钟,以便我可以添加过渡类并为退出设置动画。
使用componentWillReceiveProps,我可以通过在超时中包装this.setState 并同时添加类来完成此操作。使用新的 React 16.3 API,我看到 is is recommended 改为使用 getDerivedStateFromProps。
由于getDerivedStateFromProps“应该返回一个对象来更新状态,或者null表示新的道具不需要任何状态更新,”(React docs)我希望方法看起来像这样:
static getDerivedStateFromProps(nextProps, prevState) {
if (nextProps.menuIsOpen === false && prevState.menuIsOpen === true) {
return setTimeout(() => { menuIsOpen: false}, 1000);
}
return null;
}
但这不起作用。 I've read setTimeout 没有返回值,但我想知道是否有比返回承诺更优雅的问题解决方案。
【问题讨论】:
-
尝试在
componentDidUpdate而不是componentWillReceiveProps中做你之前所做的事情。
标签: javascript reactjs settimeout