ReactJS在单击链接时显示警报消息

时间:2016-05-12 15:15:47

标签: reactjs

以下代码显示警报消息,因为规则已在map()函数中绑定。我不希望这种情况发生。相反,如何将onClick()绑定到每个链接,以便当用户单击该链接时,该消息将显示?我认为这与将bind(this)放在map()代码中的某处无关,但无法弄明白。谢谢你的帮助!

const RuleResults = React.createClass({
  showMessage: function (rule) {
    if (rule.ShowMessageToUser == true) {
      alert(rule.MessageToUser);
    }
  },
  render: function () {

    var rules = this.props.businessRules.map((rule) => {
      return (
        <tr>
          <td>
            <a href={rule.HREF} onClick={this.showMessage(rule)} target='_blank'>{rule.Name}</a>
          </td>
        </tr>
      );
    });
    return (
      <div>
        <table>
          <thead>
            <tr>
              <th>Name</th>
            </tr>
          </thead>
          <tbody>
            {rules}
          </tbody>
        </table>
      </div>
    );
  }
});

1 个答案:

答案 0 :(得分:5)

您应该将onClick引用传递给函数而不是调用它。为此,您可以使用.bindarrow function

  1. <a href={rule.HREF} onClick={ this.showMessage.bind(this, rule) }>..</a>
  2. <a href={rule.HREF} onClick={ () => this.showMessage(rule) }>..</a>
  3. Example