set State在Reactjs中没有立即更新?

时间:2018-04-29 06:51:38

标签: reactjs react-state-management

我创建了这个代码,点击一个按钮,它的id在数组'allInterest'中连接。

但是在这里我注意到了,它的设置状态一个状态落后。如果我第一次点击按钮然后在控制台中,它的数组是空白但当我点击另一个按钮然后它是第一次点击按钮Id同样继续下去。

请指导我为什么会这样的事情发生。谢谢你的期待

 export default class Test extends Component {
  constructor(props, context) {
    super(props, context);

    this.handleChange = this.handleChange.bind(this);
    this.state = {
      value:'',
      numbers:[1, 2, 3, 4, 5],
      posts : [
        {id: 1, topic:"Animal"},
        {id: 2, topic:"Food"},
        {id: 3, topic:"Planet"},
        {id: 4, topic:"Nature"},
      ],
      btnSelected:false,
      allInterest:[],
    };
    console.log(this.state);
  }

  handleChange(e) {
    //console.log(e.target.value);
    const name = e.target.name;
    const value = e.target.value;
    this.setState({[name]: value});
    console.log(this.state)
   }

   getInterest(id){
     console.log(id);
     console.log(this.state.allInterest)
    // if(this.state.allInterest.length>0 )
    // {
    //   console.log("Yes we exits");
    // }
    // else
    // {
      console.log(id)
      // this.setState({
      //   allInterest:this.state.allInterest.concat(id)
      // })
      this.setState((prevState) => ({
        allInterest: prevState.allInterest.concat([id])
      }));  
    // }
    console.log(this.state)

   }



  render() {
    // numbers = [1, 2, 3, 4, 5];
    return (
      <div>

      <div className="signupApp">
      Test
      {this.state.listobj}



      { this.state.posts.map((posts,index) => 
        <li key={'tab'+index} class="btn btn-default" onClick={()=>this.getInterest(posts.id)} onChange={() => this.handleChange(this.event)}>{posts.topic}</li>
        )}

      </div>
  </div>
    );
  }
}

0 个答案:

没有答案