javascript - 我使用 `e.currentTarget.dataset.id` 来获取单击的 li 的 inex,但给了我 `undefined`

标签 javascript html reactjs ecmascript-6

在下面的代码中,我使用e.currentTarget.dataset.id来获取单击的li的索引,但它返回undefined,这是什么问题?如何使用 e 获取索引?

 class Answers extends React.Component {
    constructor(props) {
        super(props);
}

handleCheck(e) {
    console.log(e.currentTarget.dataset.id);
}

render() {
    return (
        <div>
            <ul>

                <li onClick={this.handleCheck.bind(this)} data-id="1"><span>A</span> <p>{this.props.answers[0]}</p></li>

                <li onClick={this.handleCheck.bind(this)} data-id="2"><span>B</span> <p>{this.props.answers[1]}</p></li>

                <li onClick={this.handleCheck.bind(this)} data-id="3"><span>C</span> <p>{this.props.answers[2]}</p></li>

                <li onClick={this.handleCheck.bind(this)} data-id="4"><span>D</span> <p>{this.props.answers[3]}</p></li>

                {this.props.answers[3]}</p></li>
          </ul >
            </div >
        );
    }
}

最佳答案

dataset reads data-xx给定 DOM 元素中的属性。所以<span data-id="1">test</span>将评估dataset.id 1.渲染dom元素时需要传递data属性才能读取它们。

class Answers extends React.Component {
    constructor(props) {
        super(props);
    }

   handleCheck(e) {
   console.log(e.currentTarget.dataset.id );
}

    render() {
      const { answers } = this.props;
        return (
            <div>
                <ul>
                {answers.map((answer, i) =>
                <li onClick={this.handleCheck} data-id={i}>
                  <span>{String.fromCharCode(65+i)}</span> <p>{answer}</p>
                 </li>
                )}
                    </ul>
                </div>
            );
    }
}

const answers = ['one', 'two', 'three'];
ReactDOM.render(<Answers answers={answers} />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root" />

关于javascript - 我使用 `e.currentTarget.dataset.id` 来获取单击的 li 的 inex,但给了我 `undefined`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49711130/

相关文章:

javascript - 如何覆盖 og :url meta tag with reactjs

javascript - 将请求/响应存储到 Node JS Express 中的数据库表中

javascript - HTML5 拖放无法正常工作

javascript - 为什么我的 JQuery 代码在正确编写代码时不想工作

javascript - React 中与子组件的交叉观察器

拒绝访问属性的 javascript 权限

javascript - React – 向其子组件公开组件函数

php - 查询以在表中的间隔内计数

reactjs - 在 React/Nextjs 中导入文件夹中的多个文件

reactjs - 在 Electron 1.5 中导出/导入自定义 JSX 组件(ES6 模块)