ReactJS: Warning: setState(...): Cannot update during an existing state transition ReactJS: Warning: setState(...): Cannot update during an existing state transition reactjs reactjs

ReactJS: Warning: setState(...): Cannot update during an existing state transition


Looks like you're accidentally calling the handleButtonChange method in your render method, you probably want to do onClick={() => this.handleButtonChange(false)} instead.

If you don't want to create a lambda in the onClick handler, I think you'll need to have two bound methods, one for each parameter.

In the constructor:

this.handleButtonChangeRetour = this.handleButtonChange.bind(this, true);this.handleButtonChangeSingle = this.handleButtonChange.bind(this, false);

And in the render method:

<Button href="#" active={!this.state.singleJourney} onClick={this.handleButtonChangeSingle} >Retour</Button><Button href="#" active={this.state.singleJourney} onClick={this.handleButtonChangeRetour}>Single Journey</Button>


I am giving a generic example for better understanding, In the following code

render(){    return(      <div>        <h3>Simple Counter</h3>        <Counter          value={this.props.counter}          onIncrement={this.props.increment()} <------ calling the function          onDecrement={this.props.decrement()} <-----------          onIncrementAsync={this.props.incrementAsync()} />      </div>    )  }

When supplying props I am calling the function directly, this wold have a infinite loop execution and would give you that error, Remove the function call everything works normally.

render(){    return(      <div>        <h3>Simple Counter</h3>        <Counter          value={this.props.counter}          onIncrement={this.props.increment} <------ function call removed          onDecrement={this.props.decrement} <-----------          onIncrementAsync={this.props.incrementAsync} />      </div>    )  }


That usually happens when you call

onClick={this.handleButton()} - notice the () instead of:

onClick={this.handleButton} - notice here we are not calling the function when we initialize it