我正在使用以下代码在字段更改时触发闪烁。一切都很好,但是由于某些我不理解的JavaScript魔术,我的超时实际上并未完成。如果有人可以阐明为什么这些超时无法完成的原因,那将非常有帮助-谢谢!
我假设它与在循环内使用this
有关系吗?
componentDidUpdate(prevProps) {
const updates = {};
fields(this.props).forEach(f => {
if (!_.isEqual(this.props[f], prevProps[f])) {
updates[updatedKey(f)] = true;
}
});
if (Object.keys(updates).length > 0) {
this.setState({ ...updates });
Object.keys(updates).forEach(f => {
const tkey = timeoutKey(f);
clearTimeout(this[tkey]);
this[tkey] = setTimeout(() => this.setState({ [updatedKey(f)]: false }), 700);
});
}
}