Javascript 更改React中的文本字段时更新状态的延迟 从“React”导入React; 导出默认类App扩展React.Component{ 状态={ 项目:[], 案文:“” }; handleTextChange=事件=>{ 这是我的国家({ 文本:event.target.value }); }; render(){ 返回( 添加 ); } }
嘿,我是新来的反应,不能解决我的问题 为什么我的HandletExt不能立即更改文本的状态?每次我在console.log中记录“text”的状态时,它总是落后于应该的状态。例如,当我在文本字段中输入“a”时,state.text为“”。然后,当我输入'b'并查看state.text时,它是'a'。等等等等Javascript 更改React中的文本字段时更新状态的延迟 从“React”导入React; 导出默认类App扩展React.Component{ 状态={ 项目:[], 案文:“” }; handleTextChange=事件=>{ 这是我的国家({ 文本:event.target.value }); }; render(){ 返回( 添加 ); } },javascript,reactjs,Javascript,Reactjs,嘿,我是新来的反应,不能解决我的问题 为什么我的HandletExt不能立即更改文本的状态?每次我在console.log中记录“text”的状态时,它总是落后于应该的状态。例如,当我在文本字段中输入“a”时,state.text为“”。然后,当我输入'b'并查看state.text时,它是'a'。等等等等 谢谢这是一个重复的问题,但回答它是因为setState是异步的 了解更多信息。您将在哪里登录?我在你的代码中看不到任何“控制台.日志”这是否回答了你的问题?react的setState是异步
谢谢这是一个重复的问题,但回答它是因为setState是异步的
了解更多信息。您将在哪里登录?我在你的代码中看不到任何“控制台.日志”这是否回答了你的问题?react的
setState
是异步的。您可以在setState
完成后触发的回调函数中记录state的值,如下所示:this.setState({text:textValue},()=>console.log(this.state.text))代码>@RicardoGonzalez我的想法正是如此。我假设OP在setState
调用之后立即在handleTextChange
函数中执行此操作。请记住,setState
不是立即命令。您可以执行以下操作以控制台记录状态this.setState({text:event.target.value},()=>console.log(this.state))
UPDATE:@BryanElliott你比我先到。谢谢大家-所有这些答案都非常有用!谢谢,这真的很有帮助!
import React from "react";
export default class App extends React.Component {
state = {
items: [],
text: ""
};
handleTextChange = event => {
this.setState({
text: event.target.value
});
};
render() {
return (
<div className="appMain">
<form onSubmit={this.addItem}>
<input
placeholder="Enter task: "
onChange={this.handleTextChange}
value={this.state.text}
/>
<button type="submit">Add</button>
</form>
</div>
);
}
}