当前位置: 首页 > 面试题库 >

React js onClick无法将值传递给方法

毋澄邈
2023-03-14
问题内容

我想阅读onClick事件值属性。但是当我单击它时,在控制台上会看到类似以下的内容:

SyntheticMouseEvent {dispatchConfig: Object, dispatchMarker: ".1.1.0.2.0.0:1", nativeEvent: MouseEvent, type: "click", target

我的代码正常工作。运行时,我可以{column}在onClick事件中看到但无法获取它。

我的代码:

var HeaderRows = React.createClass({
  handleSort:  functhtml" target="_blank">ion(value) {
    console.log(value);
  },
  render: function () {
    var that = this;
    return(
      <tr>
        {this.props.defaultColumns.map(function (column) {
          return (
            <th value={column} onClick={that.handleSort} >{column}</th>
          );
        })}
        {this.props.externalColumns.map(function (column) {
          // Multi dimension array - 0 is column name
          var externalColumnName = column[0];
          return ( <th>{externalColumnName}</th>);
        })}
      </tr>
    );
  }
});

如何onClick在React js中将值传递给事件?


问题答案:

简单的方法

使用箭头功能:

return (
  <th value={column} onClick={() => this.handleSort(column)}>{column}</th>
);

这将创建一个新的函数,handleSort以正确的参数进行调用。

更好的方法

将其提取到子组件中。在render调用中使用箭头函数的问题是,每次都会创建一个新函数,最终导致不必要的重新渲染。

如果创建子组件,则可以传递处理程序并将props用作参数,然后仅当props更改时才重新渲染(因为现在处理程序引用不再更改):

子组件

class TableHeader extends Component {
  handleClick = () => {
    this.props.onHeaderClick(this.props.value);
  }

  render() {
    return (
      <th onClick={this.handleClick}>
        {this.props.column}
      </th>
    );
  }
}

主要成分

{this.props.defaultColumns.map((column) => (
  <TableHeader
    value={column}
    onHeaderClick={this.handleSort}
  />
))}

旧的简便方法(ES5)

使用.bind通过所需要的参数:

return (
  <th value={column} onClick={that.handleSort.bind(that, column)}>{column}</th>
);


 类似资料:
  • 我正在工作的这个应用程序运行两个不同的查询到Firebase。第一个Firebase查询显示pickerView中的数据,第二个是对“Users”集合的查询并提取自定义域。两个查询都按预期工作,pickerView显示信息,并且我能够将用户集合的结果打印到控制台。我遇到的问题是,我正在尝试将自定义域的值传递给下一个VC,但没有成功。我不确定我错过了什么。非常感谢任何帮助。下面是我的代码:

  • 问题内容: 一个讨论是关于将空值传递给方法。 它代表了不同的处理方式: 我更喜欢断言方法,但是我不喜欢断言默认情况下处于关闭状态的事实。 该书最后指出: 在大多数编程语言中,没有很好的方法来处理调用者意外传递的null。因为是这种情况,所以合理的方法是默认情况下禁止传递null。 它实际上并没有涉及如何实施此限制? 无论哪种方式,您中的任何人都有强烈的意见。 问题答案: 在这里,使用断言和引发异常

  • 问题内容: 如何将整个数组传递给方法? 如何正确执行此操作? 问题答案: 你做这个: 只需将其作为其他任何变量传递即可。 在Java中,数组是通过引用传递的。

  • 这是我的第一个Java应用程序。我正在尝试创建一个产品(键)和它们的价格(值)的地图。文档上说我不能用doubles换钱,所以我得用bigdecimal。我现在完全不知道如何在我的方法和地图中使用BigDecimal。 寄存器类: 主类:

  • 我有办法 我想知道如果它真的创建了用户,我是否可以对其进行单元测试。但是它没有参数。 我尝试了以下方法: 然而,这实际上让我通过了与扫描仪的争论,这显然是我在测试中无法做到的。还尝试了其他逻辑。我也尝试过使用when(),,,但我找不到解决这个问题的方法,因为我对模仿还比较陌生。 有人能和我分享一些想法吗?

  • 第一个数字:3第二个数字:4和:7