ReactJS:Warning:setState(…):无法在现有状态转换期间更新

我正在尝试从渲染视图重构以下代码:

<Button href=”“active={!this.state.singleTravelage}onClick={this.handleButtonChange.bind(this,false)}>Retour&lt/按钮>

绑定在构造函数中的版本。原因是渲染视图中的绑定会给我带来性能问题,尤其是在低端手机上

我已经创建了以下代码,但是我经常会遇到以下错误(很多)。看起来应用程序进入了一个循环:

警告:设置状态(…):无法在现有状态转换期间更新(例如在'render'或其他组件的构造函数中)。渲染方法应该是道具和状态的纯函数;构造函数的副作用是一种反模式,但可以移动到“componentWillMount”。

下面是我使用的代码:

var React=require('React');
var ButtonGroup=require('react-bootstrap/lib/ButtonGroup');
var Button=require('react-bootstrap/lib/Button');
var Form=require('react-bootstrap/lib/Form');
var FormGroup=require('react-bootstrap/lib/FormGroup');
var Well=require('react-bootstrap/lib/Well');
导出默认类搜索扩展React.Component{
构造函数(){
超级();
此.state={
单程旅行:错误
};
this.handleButtonChange=this.handleButtonChange.bind(this);
}
把手按钮更改(值){
这是我的国家({
单程旅行:价值
});
}
render(){
返回(
<表格>
<井式={wellStyle}>
<FormGroup className=“文本中心”>
<按钮组>
<Button href=”“active={!this.state.singleTravely}onClick={this.handleButtonChange(false)}>Retour</Button>
<Button href=”“active={this.state.singleJourney}onClick={this.handleButtonChange(true)}>singleJourney</Button>
</ButtonGroup>
</FormGroup>
</Well>
</Form>
);
}
}
module.exports=搜索;

看起来您在渲染方法中意外调用了handleButtonChange方法,您可能希望改为执行onClick={()=>this.handleButtonChange(false)}

如果不想在onClick处理程序中创建lambda,我认为需要有两个绑定方法,每个参数一个

构造函数中

this.handleButtonChangeRetour=this.handleButtonChange.bind(this,true);
this.handlebuttonchangesigne=this.handleButtonChange.bind(this,false);

渲染方法中:

<按钮href=”“active={!this.state.singleTravely}onClick={this.handleButtonChangeSingle}>Retour&lt/按钮>
<Button href=”“active={this.state.singleTravelage}onClick={this.handlebuttonChangeTour}>单程旅行&lt/按钮>

发表评论