javascript - 在reactjs中重新渲染组件onClick

标签 javascript reactjs

我有一个组件,该组件中有一个 onClick方法定义。在该方法上,我正在调用后端并得到一些响应。仅在刷新浏览器后才设置从后端调用获取的值。有没有办法通过刷新浏览器来重新渲染我的组件?

我用过this.forceUpdate()这是在 react 文档中,但无法实现我所需要的。如何在不刷新浏览器的情况下仅重新渲染我的组件?

我的代码。

handleClick(id) {

    this.setState({

        vote_status: !this.state.vote_status,

    })

    let vote_object = {
        voting_object: id,
        post_id: this.props.postId
    }
    this.props.submitvote(vote_object)

    //this.forceUpdate()
}

render() {

    console.log("getVoteStatus", this.props.getVoteStatus)

    let {contents, submitvote, postId, voted_id} = this.props

    return (

        <div className="txt_vote_bar_div" style={{
            color: voted_id === contents.post_poll_content_id ? 'white' : '#9da0a4',
            backgroundColor: this.state.vote_status ? '#0b97c4' : '#FFFFFF'
        }} id={contents.post_poll_content_id}>
            <p className="txt_vote_choice"
               style={{color: this.state.vote_status || voted_id === contents.post_poll_content_id ? '#FFFFFF' : '#6a6a6a'}}
               id={"id" + contents.post_poll_content_id}
               onClick={() => {
                   this.handleClick(contents.post_poll_content_id);

               }}> {contents.content} </p>
            <p className="txt_tot_votes"
               style={{color: this.state.vote_status || voted_id === contents.post_poll_content_id ? '#FFFFFF' : '#6a6a6a'}}> {contents.votes}%
                (Votes:)</p>
        </div>
    );
};

最佳答案

您使用 this.forceUpdate() 是错误的:在您调用它时,后端信息尚未完成。像这样更改代码:

submitvote(vote_object, done) {
  // ... stuffs ...

  done()
}


handleClick(id) {
  // ... stuffs ...

  this.props.submitvote(vote_object, ()=>{
    this.forceUpdate()
  })
}

关于javascript - 在reactjs中重新渲染组件onClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45710457/

相关文章:

javascript - GWT IFrame Javascript 错误

javascript - 在处理 React.js 元素时是否建议编辑 index.html 文件?

javascript - 如何修改对象的javascript数组,例如将对象值修改为键值对

reactjs - JavaScript 中的 "..."(3 个点)是什么?

javascript - 不同位置的过渡元素

cqrs - 对 React 的 Flux 架构感到困惑 - waitFor

javascript - ngRepeat 无项目时处理

javascript - 下载不适用于 IE8 中的 Chrome Frame

javascript - 从另一个 Controller 更新 ng-repeat 上的复杂过滤器

javascript - jQuery,在单击时将 css 规则添加到特定元素