我需要设置一个从事件中获取的状态字段,但当我向其传递函数时,它不会被设置.组件和方法如下所示:
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
.这是一个无操作功能.如果必须保留原始合成事件,请使用事件.坚持().更多信息请参见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=> ...)
时,上面的方法不起作用?