Javascript 未正确更新React onChange事件

Javascript 未正确更新React onChange事件,javascript,reactjs,Javascript,Reactjs,编辑:没关系,这是个打字错误。我从状态传递了brokersListFilter,而不是使用事件值 我正在尝试创建一个过滤器组件,它允许用户过滤来自web服务Get请求的数据。我的代码: <TextField id="filter" helperText={labels.filterHelperText} value={this.props.brokersListFilter} onChange={this.onFilterChange

编辑:没关系,这是个打字错误。我从状态传递了
brokersListFilter
,而不是使用事件值

我正在尝试创建一个过滤器组件,它允许用户过滤来自web服务Get请求的数据。我的代码:

    <TextField
      id="filter"
      helperText={labels.filterHelperText}
      value={this.props.brokersListFilter}
      onChange={this.onFilterChange}
      className={this.props.classes.textField}
      }}
    />

代码工作,但有一个“延迟”,如果我输入“222”,例如数据被“22”过滤,删除也一样,当我放弃从“222”到“22”的数字时,数据被“222”过滤。它就像是在使用最后一个状态,而不是当前状态。为什么会发生这种情况?

我怀疑之所以会发生这种情况,是因为
setState

这是因为更新全局存储变量
brokersListFilter
并调用函数
getBrokers
下一行本身的props值
brokersListFilter
不会在存储中更新。您可以尝试使用下面的
componentdiddupdate
,并从
onFilterChange
函数中删除行
this.props.getBrokers

componentDidUpdate(prevProps){
  if(this.props.brokersListFilter !== prevProps.brokersListFilter){
   this.props.getBrokers(this.props.brokersListPage, this.props.brokersListFilter)
 }
}

你能把你的完整密码寄出去吗?这可能是一个
setState
问题。我已经更新了问题。我使用dispatch而不是setState,但是有一个调用是异步的。没关系。这是一个输入错误,我传递的是状态值而不是事件值。你可以删除答案,所以我将删除问题。
componentDidUpdate(prevProps){
  if(this.props.brokersListFilter !== prevProps.brokersListFilter){
   this.props.getBrokers(this.props.brokersListPage, this.props.brokersListFilter)
 }
}