我需要设置一个从事件中获取的状态字段,但是当我将函数传递给它时它没有设置。组件和方法如下所示:
constructor(props: SomeProps, context: any) {
super(props, context);
this.state = {
isFiltering: props.isFiltering,
anchor: "",
};
}
private toggleFilter = (event: any) => {
event.persist()
this.setState(prevState => ({
isFiltering: !prevState.isFiltering,
anchor: event.currentTarget // does not work, it's null
}));
}
如果我删除event.persist()
然后我收到以下错误:
出于性能原因重用此合成事件。如果您看到这一点,则表示您正在访问已
currentTarget
发布/无效的合成事件上的方法。这是一个无操作功能。如果您必须保留原始合成事件,请使用 event.persist()。有关更多信息,请参阅https://facebook.github.io/react/docs/events.html#event-pooling。
出于某种原因,以下代码有效:
private toggleFilter = (event: any) => {
this.setState({anchor:event.currentTarget}) // works fine
this.setState(prevState => ({
isFiltering: !prevState.isFiltering,
}));
}
为什么上述有效,但当我使用时无效this.setState(prevState=> ...)
?