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)
}
}