Reactjs 四个按钮使用一个功能?

Reactjs 四个按钮使用一个功能?,reactjs,Reactjs,我写这篇文章是为了回应 现在我有2组数字,由4个按钮控制;2个递增按钮和2个递减按钮。递增按钮升高每个数字,递减按钮降低每个数字 我为其中一个减量按钮创建了一个函数。但我不知道如何根据单击的按钮使其动态化。我不想要4个独立的函数,我更喜欢2个函数,甚至只有1个 这就是功能: decrementClick() { if (this.state.breakLength > 1) { this.setState({ breakLength: this.stat

我写这篇文章是为了回应

现在我有2组数字,由4个按钮控制;2个递增按钮和2个递减按钮。递增按钮升高每个数字,递减按钮降低每个数字

我为其中一个减量按钮创建了一个函数。但我不知道如何根据单击的按钮使其动态化。我不想要4个独立的函数,我更喜欢2个函数,甚至只有1个

这就是功能:

decrementClick() {
        if (this.state.breakLength > 1) {
          this.setState({ breakLength: this.state.breakLength - 1 })
        }  
    }
这是JSX代码:

<button id="break-decrement" onClick={this.decrementClick.bind(this.decrementClick)}>▼</button>
我可以将一个值从按钮传递到函数中,但它如何修改正确的状态?

请检查:

class MyComponent extends React.Component {
  state = {
    foo: 0,
    bar: 0
  }

  handleUpdateCounter(counterId, operation, event) {
    this.setState(prevState => ({
      [counterId]: operation === 'increment' ? prevState[counterId] + 1 : prevState[counterId] - 1
    }));

  }

  render() {
    const { foo, bar } = this.state

    return (
      <div>
          Foo: {foo}, Bar: {bar}
          <button onClick={this.handleUpdateCounter.bind(this, 'foo', 'increment')}>I increment foo</button>

          <button onClick={this.handleUpdateCounter.bind(this, 'bar', 'decrement')}>I decrement bar</button>

      </div>
    )
  }

}

使用myVar中存储的键名作为字符串,在对象中设置动态键的方式


我们使用这个.setState(回调)来确保读取计数器的前一个值,因为setState是异步的

太棒了,谢谢你!这完全回答了我的问题。有没有办法在setState之外访问this.state.foo的值?我想用if语句检查数字是否在一定范围内。@AdamWeiler没问题。在组件的任何方法中,您都可以通过执行
this.state.foo
来访问当前状态。我的意思是,handleUpdateCounter()现在同时使用foo和bar。有没有一种方法可以动态地编写一个if语句,该语句可以用于foo或bar?示例:if([counterId]>1)--或者:if(this.state.[counterId]>1)@AdamWeiler我想您可能只需要使用this.state[counterId](或者我的示例中的prevState[counterId])。使用myObj[myKeyVar]动态访问对象中的密钥。没问题,很好。
{
 [myVar]: "test"
}