javascript - 如何使用 onClick 事件将参数从列表项传递到函数

标签 javascript html reactjs onclick

我试图从多个列表项传递一个参数,以便在单击时区分它们。

class SettingsGeneral extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      form_fields: ["Select option"],
      selectedSetting: "general",
      configSettings: {}
    };

    this.handleClick = this.handleClick.bind(this);
  }

  handleClick({ e }) {
    const { param } = e.target.dataset;
    console.log(param); // e.currentTarget.value would be equivalent
  }

  render() {
    return (
      <ul className="settings-list">
        <li data-param="value" onClick={this.handleClick}></li>
      </ul>
    );
  }
}

使用当前代码,我收到错误:

TypeError: Cannot read property 'target' of undefined

这意味着该值没有发送到 handleClick 函数,我尝试将其记录在控制台中。

我该如何执行此操作以及执行此操作的最佳方法是什么?网上有很多不同的答案。

最佳答案

您可以通过两种方式做到这一点:

  1. 传递事件并从其数据集中获取数据:
handleClick(e) {
    const { param } = e.target.dataset;
    console.log(param); // e.currentTarget.value would be equivalent
  }

  render() {
    return (
      <ul className="settings-list">
        <li data-param="value" onClick={this.handleClick}></li>
      </ul>
    );
  }
  • 将值直接传递给 onClick 处理程序:
  • handleClick(value) {
        console.log(value);
      }
    
      render() {
        return (
          <ul className="settings-list">
            <li onClick={() => this.handleClick(value)}></li>
          </ul>
        );
      }
    

    关于javascript - 如何使用 onClick 事件将参数从列表项传递到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59021888/

    相关文章:

    javascript - 如何在 JavaScript 中访问另一个文件中的对象和类

    javascript - Jquery、Bootstrap - 触发模式隐藏上的点击事件并选择输入中的文本

    javascript - 性能问题: generic selector vs individual binding

    html - 将交互式 Excel 电子表格嵌入网站

    html - 如何允许在 gmail 邮件 HTML 中重叠图像

    node.js - 我部署了我的项目,我收到此错误输入文件包含不受支持的图像格式

    javascript - React 的 useEffect 钩子(Hook)如何访问其下定义的所有函数表达式?

    javascript - 如何在 HighChart 的 yAxis 上只显示整数值?

    jquery - 使用 "toggle"函数的简单 jQuery 测试,未按预期运行

    reactjs - NextJS 来自字符串的头部