我ul
li
在render
方法中有一个列表,并且有一个onClick
事件li
,调用this.handleClick
函数和状态被更改
var InspirationFilter = React.createClass({
getInitialState: function() {
return {currentFilterText:"Top All Time", currentFilter:"top_all_time", showUl:false};
},
handleClick: function(filter, filterText){
this.setState({currentFilterText:filterText, currentFilter:filter, showUl:!this.state.showUl});
},
render: function() {
return (
<ul>
<li onClick={this.handleClick('top_all_time', 'Top All Time')}>Top All Time</li>
<li onClick={this.handleClick('top_this_week', 'Top This Week')}>Top Week</li>
<li onClick={this.handleClick('top_this_month', 'Top This Month')}>Top Month</li>
</ul>
);
}
});
但是这段代码给了我错误
警告:setState(...):无法在现有状态转换期间更新(例如在 内
render
)。Render 方法应该是 props 和 state 的纯函数
我尝试将绑定与这样的点击事件一起使用,
return (
<ul>
<li onClick={this.handleClick.bind(this,'top_all_time', 'Top All Time')}>Top All Time</li>
<li onClick={this.handleClick.bind(this,'top_this_week', 'Top This Week')}>Top Week</li>
<li onClick={this.handleClick.bind(this.'top_this_month', 'Top This Month')}>Top Month</li>
</ul>
);
上面的错误现在消失了,但遇到了另一个错误,如下所示,
警告:bind():您正在将组件方法绑定到组件。React 会以高性能的方式自动为您执行此操作,因此您可以安全地删除此调用。见灵感过滤器
在 React 文档Communicate between Components 中,他们也使用了该bind
方法。
有什么建议可以解决它吗?