【发布时间】:2020-10-14 20:01:27
【问题描述】:
这只是显示一个初始字符串。然后,当单击按钮时,它会更改字符串。
但在运行时,它会显示初始字符串。然后,当单击按钮时,您可以看到字符串在一瞬间发生了变化。 (新值的控制台日志也会被触发 - 并且有效)。但是,然后旧字符串再次显示。
如果对状态进行了更改,为什么它会恢复?
这是显示字符串的代码:
// Display.js
import React from 'react';
class Display extends React.Component {
constructor(props) {
super(props);
this.state = {
blogPosts: "The Bingham Blog"
};
this.clickHandler=this.clickHandler.bind(this);
}
clickHandler() {
this.setState({
blogPosts: "Changed!!!!!!!"
}, () => {console.log(this.state.blogPosts)});
}
render() {
return (
<p>
<form>
<button onClick={this.clickHandler}>Add on</button>
</form>
{this.state.blogPosts}
</p>
);
}
}
export default Display;
这里是调用<Display />组件的App.js文件:
import React from 'react';
import Display from "./Display";
function App() {
return (
<div className="App">
<header className="App-header">
<h1>Enter text for the blog</h1>
</header>
<div className="display">
<Display />
</div>
</div>
);
}
export default App;
我已经为此苦苦挣扎了好几天。
我知道这很可能是 setState 的异步特性,但我不知道如何解决。
【问题讨论】:
-
欢迎来到 SO。只需检查重复的问题。您可以在处理程序中使用
event.preventDefault(),或者您可以将button类型设置为您的按钮,格式为type="button"
标签: javascript reactjs setstate