反应切换按钮问题

时间:2016-09-12 18:44:00

标签: javascript reactjs

我正在尝试让这个开关https://github.com/pgrimard/react-toggle-switch在我的反应项目中工作。它目前正在按预期工作(它切换并调用toggleFeature函数),但是我很难理解如何实际链接每个开关以执行不同的操作。通常我会在onClick事件中获取某种可识别的属性来确定要执行的操作,但在这种情况下,我有点担心如何操作。

继承我目前的代码(尽可能简单地制作)

class FeatureItem extends React.Component {
  constructor(props) {
        super(props);
        this.state = {on: props.flag};
  }

  _toggleFeature(e) {
    console.log(e); // Undefined
    console.log("ASSD"); // Called on the toggle
  }

  render () {
      <div className="example-usage">
        <p>Switch state: {this.state.on ? 'On' : 'Off'}</p>
         <Switch className= {this.props.description} onClick={this._toggleFeature.bind(this)} on={this.state.on}/>
      </div>
    )
  }
};

有没有人知道我在做错事件时做错了什么,还有一些想法是关于如何为每个按钮提供我自己的唯一标识符,我可以在onClick事件中阅读?

按钮示例:https://github.com/pgrimard/react-toggle-switch/blob/master/example/app/scripts/main.js#L12如果有任何帮助

谢谢!

1 个答案:

答案 0 :(得分:2)

在绑定_toggleFeature函数时,您可以为其指定调用它的参数:

<Switch className= {this.props.description} onClick={this._toggleFeature.bind(this, 'toggle1')} on={this.state.on1}/>
<Switch className= {this.props.description} onClick={this._toggleFeature.bind(this, 'toggle2')} on={this.state.on2}/>

现在您可以区分处理程序中的切换:

_toggleFeature(toggleName) {
  if (toggleName === 'toggle1') {
    // Do some logic for toggle 1
  } else if (toggleName === 'toggle2') {
    // Do some logic for toggle 2
  }
}

除非您动态创建可变数量的开关,否则您可以为每个切换设置不同的处理函数。