在if / else语句中反应丢失状态

时间:2017-11-23 11:27:45

标签: reactjs

我在以下代码中真的很挣扎。我使用' onClick'来调用函数。这个函数已经在组件的构造函数中受到限制,但由于某种原因,这个函数的功能很多。在事件处理程序中返回' undefined'。

foreach(array_count_values($array) as $value => $count){
    if($count > 1){
        echo "hi " . $value . "*";
    }else{
       echo "count = 1 " . $value . "*";
    }
}

onClick调用以下函数。

render() {

if (bla) {
  (...)
  return (
    <div>Loading</div>
  )
} else: {
  return (
    <div>
      <a onClick={this.activeorArchive}><h4>Archive</h4></a>
    </div>
}}

我不清楚我在这里做错了什么。我在过去有一个类似的问题,其中return语句是函数本身的一部分(通过将其转换为箭头函数来解决)。但肯定有一种方法可以在if / else语句中保留状态吗?

更新

根据要求,构造函数:

activeorArchive() {

  if (this.state.active === true) {
    this.setState((prevState, props) => ({
      assessments_list_url: prevState.assessment_list_url + 'archived=false' + "/"
    }))
    console.log(self.state.active)
  } else {
    this.setState((prevState, props) => ({
      assessments_list_url: prevState.assessment_list_url + 'archived=true' + "/"
    }))
    console.log(self.state.active)
  }
}

1 个答案:

答案 0 :(得分:2)

尝试这种方法:

activeorArchive = () => {
    const newListURL = `/api/assessments/archived=${this.state.active ? 'false' : 'true'}`;
    this.setState({assessments_list_url: newListURL});
};

请告诉我,如果它适合你:)