我正在尝试做这个 ReactJS 教程的第 15 步:React.js 介绍给那些只知道足够 jQuery 的人
作者建议如下:
overflowAlert: function() {
if (this.remainingCharacters() < 0) {
return (
<div className="alert alert-warning">
<strong>Oops! Too Long:</strong>
</div>
);
} else {
return "";
}
},
render() {
...
{ this.overflowAlert() }
...
}
我尝试执行以下操作(对我来说看起来不错):
// initialized "warnText" inside "getInitialState"
overflowAlert: function() {
if (this.remainingCharacters() < 0) {
this.setState({ warnText: "Oops! Too Long:" });
} else {
this.setState({ warnText: "" });
}
},
render() {
...
{ this.overflowAlert() }
<div>{this.state.warnText}</div>
...
}
我在 Chrome Dev Tools 的控制台中收到以下错误:
无法在现有状态转换期间更新(例如内部
render
或另一个组件的构造函数)。Render 方法应该是 props 和 state 的纯函数;构造函数的副作用是一种反模式,但可以移至componentWillMount
.
这是一个JSbin 演示。为什么我的解决方案不起作用,这个错误是什么意思?