我无论如何也想不出这件事。每次调用setState()时,组件都会重新呈现,对吗?我设置了一系列的print语句,所以我可以看到我的处理程序正在被触发,而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>
);
}
发布于 2016-11-17 15:41:55
setState会为你触发render,不需要调用forceUpdate
此外,setState是异步的,因此您的forceUpdate将在state更新之前触发
发布于 2016-11-17 16:47:41
我只是用不同的行为做了同样的事情。我认为您需要将函数(HandleFavorite)的引用传递给onClick签出这个答案:Why is my onClick being called on render? - React.js
https://stackoverflow.com/questions/40649091
复制相似问题