Javascript event.target.value在更改前给出值
当我试图使用onchange更改输入字段的状态时,e.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函数如下所示
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是异步的