javascript – 在React中的现有状态转换错误期间无法更新
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在React中的现有状态转换错误期间无法更新,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2309字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 在React中的现有状态转换错误期间无法更新](/upload/InfoBanner/zyjiaocheng/822/369a5fc95efb423eb6db2fc835103716.jpg)
在我的渲染return()里面我有这些:
<button onClick={ this.selectTimeframe('Today') }
className={ this.setActiveIf('Today') } type="button">Today</button>
这是什么功能:
selectTimeframe(timeframe) {
// this.setState({ timeframe });
}
^我现在必须注释掉setState否则我会得到上面发布的那个错误并且应用程序中断了.
我在构造函数中有这个:
this.selectTimeframe = this.selectTimeframe.bind(this);
我发现这个answer here,但它没有意义,我怎么想传递变量?或者他是说每个独特的按钮都需要一个独特的功能?为了避免在渲染中调用它?
完整代码
import React from 'react';
export class TimeframeFilter extends React.Component {
constructor(props) {
super(props);
this.state = {
timeframe: 'Today'
};
this.selectTimeframe = this.selectTimeframe.bind(this);
this.setActiveIf = this.setActiveIf.bind(this);
}
componentDidMount() {
console.log('%c TimeframeFilter componentDidMount', 'background: #393939; color: #bada55', this.state);
}
selectTimeframe(timeframe) {
// this.setState({ timeframe });
}
setActiveIf(timeframe) {
return this.state.timeframe === timeframe ? 'btn btn-default active' : 'btn btn-default';
}
render() {
return (
<div className="fl">
<span className="label label-default mr10">Timeframe</span>
<div className="btn-group btn-group-sm mr20" role="group">
<button onClick={ this.selectTimeframe('Today') }
className={ this.setActiveIf('Today') } type="button">Today</button>
<button onClick={ this.selectTimeframe('Week') }
className={ this.setActiveIf('Week') } type="button">Week</button>
<button onClick={ this.selectTimeframe('Month') }
className={ this.setActiveIf('Month') } type="button">Month</button>
<button onClick={ this.selectTimeframe('Year') }
className={ this.setActiveIf('Year') } type="button">Year</button>
<button onClick={ this.selectTimeframe('All') }
className={ this.setActiveIf('All') } type="button">All</button>
</div>
</div>
);
}
}
export default TimeframeFilter;
解决方法:
您应该使用箭头函数或绑定方法将值传递给onClick函数,否则它只是执行以在每次重新渲染时将值返回到onClick,如果您在其中使用setState,它将调用rerender并且函数将再次调用并因此重复这个过程.
这样做
<button onClick={ ()=> this.selectTimeframe('Today') }
className={ this.setActiveIf('Today') } type="button">Today</button>
要么
<button onClick={ this.selectTimeframe.bind(this, 'Today') }
className={ this.setActiveIf('Today') } type="button">Today</button>
希望我能清楚地向你解释.
内容总结
以上是互联网集市为您收集整理的javascript – 在React中的现有状态转换错误期间无法更新全部内容,希望文章能够帮你解决javascript – 在React中的现有状态转换错误期间无法更新所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。