如何在Js / ReactJs中单击同一按钮来增加/减少计数

时间:2019-05-07 18:14:44

标签: javascript reactjs

我想基于按钮单击来增加/减少计数器。 场景: 按钮上有一个初始值,例如:5 用户单击该按钮时,其增量为+1-o / p:6 但是,当用户再次单击该按钮时,它将再次减少到5。 在这种情况下,我没有2个按钮-inc和dec可增加/减少计数。

代码:

class Hello extends React.Component {
   constructor() {
      super()
      this.state = {
        count: 100
      }
    }
  getCount() {
    this.setState({count: this.state.count +1});
  }
  render() {
    return  <div>
                    <button onClick={this.getCount.bind(this)}>Like | {this.state.count}</button>
                </div>;
  }
}

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);

html:

<div id="container">
</div>

2 个答案:

答案 0 :(得分:3)

您需要一个附加状态值来跟踪按钮的状态。

class Hello extends React.Component {
   constructor() {
      super()
      this.state = {
        count: 100,
        clicked: false
      }
    }
  getCount() {
    const clicked = this.state.clicked
    if(clicked){
      this.setState({count: this.state.count - 1, clicked: false});
    } else {
      this.setState({count: this.state.count + 1, clicked: true})
    }

  }
  render() {
    return  <div>
                    <button onClick={this.getCount.bind(this)}>Like | {this.state.count}</button>
                </div>;
  }
}

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);

答案 1 :(得分:1)

我尝试了以下解决方案。

class App extends Component{
 constructor(){
   super()
   this.state={
     count:0,
   }
 }

 increment(){
   this.setState(
     {
       count:this.state.count+1
     }
   );
 };

 decrement(){
   this.setState(
     {
    count:this.state.count-1
     }
   );
 };

 reset(){
   this.setState(
     {
       count:0
     }
   )
 }

 render(){
    return(
        <div style={{
          position: 'absolute', left: '50%', top: '50%',
          transform: 'translate(-50%, -50%)'
      }}>
            <h1>Current Count :{this.state.count}</h1>
            <button className="inc"  onClick={(e)=>this.increment(e)}>Increment!</button>
            <button  className="dec" onClick={(e)=>this.decrement(e)}>Decrement!</button>
            <button className="reset" onClick={(e)=>this.reset(e)}>Reset!</button>

        </div>

    );
 }




}

export default App;

除了递增和递减代码外,上述代码还有一个重置按钮,可将计数重置为0。