如何增加/减少点击 Js/ReactJs 中相同按钮的计数

Posted

技术标签:

【中文标题】如何增加/减少点击 Js/ReactJs 中相同按钮的计数【英文标题】:How to increase/decrease count on click of same button in Js/ReactJs 【发布时间】:2019-09-25 10:57:49 【问题描述】:

我想根据按钮点击来增加/减少计数器。 设想: 按钮上有一个初始值-比如说:5 当用户点击按钮时,它会增加到 +1 - o/p: 6 但是,当用户再次单击按钮时,它会再次减少到 5。 在这种情况下,我没有 2 个按钮 - inc 和 dec 来增加/减少计数。

代码:

class Hello extends React.Component 
constructor() 
   super()
   this.state = 
     count: 10,

   
 
 getCount( c ) 

    const clicked = this.state.clicked
if(c == 1)
  this.setState(count: this.state.count +1, clicked: true);
 else 
  this.setState(count: this.state.count -1)


  
  render() 
    return  <div>
                    <button onClick=this.getCount.bind(this, 1)> click me for increase </button>
                    <button onClick=this.getCount.bind(this, 0)> click me for decrease </button>
                    <div><h1>this.state.count</h1></div>

                     </div>;
  


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

【问题讨论】:

这似乎是一个奇怪的要求:按钮总是 5 或 6,不是吗? 是的,这很奇怪,但我相信这是演示按钮点击的简单递增递减 @user1234 对我的回答有什么想法吗?我想想办法改进它。 @ChristopherNgo,这对我来说是应该的工作方式.. 甜蜜!如果您有任何问题,请告诉我。 :) 【参考方案1】:

您需要一个额外的状态值来跟踪按钮的状态。

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')
);

【讨论】:

【参考方案2】:

我已经尝试了以下解决方案。

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。

【讨论】:

以上是关于如何增加/减少点击 Js/ReactJs 中相同按钮的计数的主要内容,如果未能解决你的问题,请参考以下文章

点击增加或者减少商品数量并且自动计算总价格

如何缩小/减少android中按钮的点击区域?

在ps中的选区运算中,增加选区和减少分别按哪个键?

用vs2010平台,c#写的asp.net网站,动态增加和减少Textbox

在python中怎么编程才能使角色被按一下空格就将y坐标增加松开空格就y坐标减少?

如何使用node js,reactjs,express从实际网页中的mongodb中获取数据