首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获取React组件以重新呈现

无法获取React组件以重新呈现
EN

Stack Overflow用户
提问于 2016-11-17 15:34:09
回答 2查看 64关注 0票数 0

我无论如何也想不出这件事。每次调用setState()时,组件都会重新呈现,对吗?我设置了一系列的print语句,所以我可以看到我的处理程序正在被触发,而render()却没有被触发。请帮我理解这里到底出了什么问题!

以下是我的代码的重要部分:

我的构造函数:

代码语言:javascript
复制
  constructor(){
    super();
    this.state = {upvoted:false}
    this.handleFavorite = this.handleFavorite.bind(this);
  }

我的管理员:

代码语言:javascript
复制
  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);
      });
    }

  }

我的处理程序调用:

代码语言:javascript
复制
render() {
  return (
    <div onClick={this.handleFavorite}>stuff</div>
  );
}

EN

回答 2

Stack Overflow用户

发布于 2016-11-17 15:41:55

setState会为你触发render,不需要调用forceUpdate

此外,setState是异步的,因此您的forceUpdate将在state更新之前触发

票数 0
EN

Stack Overflow用户

发布于 2016-11-17 16:47:41

我只是用不同的行为做了同样的事情。我认为您需要将函数(HandleFavorite)的引用传递给onClick签出这个答案:Why is my onClick being called on render? - React.js

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40649091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档