如何在 React 中调用 render() 中的事件处理程序

How to call event handlers inside render() in React

我的目标是在用户单击环绕在 Media 组件周围的 div 时调用 onClick 事件处理程序,但我总是碰壁。这是我的脚本:

import React, { Component } from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';
import { Media } from 'reactstrap';

var items = require('./feedData.json');

class App extends Component {
  constructor(props) {
    super(props);
  }

  onClick = (event) => {
    alert('x');
  }

  render() {
    return (
      <div className="App">
        {
            items.map(function(item) {
                return (
                    <div onClick={this.onClick}>
                    <Media>
                      <Media body>
                        <Media heading>
                          {item.title}
                        </Media>
                        {item.body}
                      </Media>
                    </Media>
                    </div>
                )
            })
        }
      </div>
    );
  }
}

export default App;

这种特殊安排会产生以下错误:

TypeError: Cannot read property 'onClick' of undefined

使用箭头函数。

    items.map((item) => {
        return (
            <div onClick={this.onClick}>
                <Media>
                    <Media body>
                        <Media heading>
                            {item.title}
                        </Media>
                        {item.body}
                    </Media>
                </Media>
            </div>
        )
    })

我们需要确保 this 的范围指向我们的 class。