Javascript event.target.value在更改前给出值

Javascript event.target.value在更改前给出值,javascript,reactjs,events,event-handling,Javascript,Reactjs,Events,Event Handling,当我试图使用onchange更改输入字段的状态时,e.target.value给出了更改前的值 搜寻 onchange函数如下所示 onChange=(e)=>{var search=e.target.value; this.setState({search}) this.props.dispatch({type:'SUGG',负载:this.state.search,}) } 我尝试记录e.target.value和this.state.search e.target.value显示的是

当我试图使用onchange更改输入字段的状态时,e.target.value给出了更改前的值


搜寻
onchange函数如下所示

onChange=(e)=>{var search=e.target.value;
this.setState({search})
this.props.dispatch({type:'SUGG',负载:this.state.search,})
}
我尝试记录
e.target.value
this.state.search
e.target.value显示的是正确的值,但状态显示的是以前的值


编辑:我知道setstate是异步函数,所以前面的值会被记录下来

尝试从setstate的回调中分派:

this.setState({search}, ()=>{
       this.props.dispatch({type:'SUGG',payload:this.state.search,})
});

由于setState的异步性质,它将首先更新状态,然后执行回调。

尝试从setState的回调调度:

this.setState({search}, ()=>{
       this.props.dispatch({type:'SUGG',payload:this.state.search,})
});
由于setState的异步性质,它将首先更新状态,然后执行回调。

的答案将起作用,但前提是您没有其他操作可以修改
此.state.search
调用
此.setState
后,您只需调用
dispatch
传入即可
直接搜索

例如:

payload:search
全文如下:

onChange=(e)=>{ var search=e.target.value;
    this.setState({search})
    this.props.dispatch({type:'SUGG',payload:search,})
}
问题在于setState是异步的。调用它不会立即改变
此.state
,因此您可以直接使用
搜索
,也可以使用
设置状态
中的回调

的答案将起作用,但假设您没有其他操作可以修改
此.state.search
调用
此.setState
后,您只需调用
dispatch
直接传入
search

例如:

payload:search
全文如下:

onChange=(e)=>{ var search=e.target.value;
    this.setState({search})
    this.props.dispatch({type:'SUGG',payload:search,})
}

问题在于setState是异步的。调用它不会立即更改此.state,因此您可以直接使用
搜索
,或者在
setState
中使用回调

原因是因为setState是异步的原因是因为setState是异步的