我的生活不能解决这个问题。每次调用setState()时,该组件都应该重新渲染,对吧?我设置了一系列打印语句,因此我可以看到我的处理程序被触发但render()不是。请帮我理解这里出了什么问题!
以下是我的代码的重要部分:
我的构造函数:
constructor(){
super();
this.state = {upvoted:false}
this.handleFavorite = this.handleFavorite.bind(this);
}

我的经纪人:
handleFavorite(event){
event.preventDefault();
console.log("handleFavorite fired");
var query=location.pathname;
query = query.split('/');
var username1=query[2];
var playlist=query[3];
var vote = this.props.data.vote;
var self = this;
if (username1) {
request
.post('/api/endpoint')
.end(function(err, res) {
self.setState({upVoted: true});
self.forceUpdate();
console.log("status "+res.body.status);
});
}
}

我的处理程序调用:
render() {
return (
<div onClick={this.handleFavorite}>stuff</div>
);
}
&#13;
答案 0 :(得分:0)
setState
应该为您触发render
,无需拨打forceUpdate
另外,setState
是异步的,因此forceUpdate
会在state
更新之前触发
答案 1 :(得分:0)
我只是对不同的行为有同样的看法。我想你需要将函数的引用(handleFavorite)传递给onClick
结帐这个答案:Why is my onClick being called on render? - React.js