【发布时间】:2018-12-14 09:59:50
【问题描述】:
我在构造函数中生成一个元素列表,并在渲染函数中渲染它。我将this 正确绑定到事件处理程序,但仍然无法调用事件处理程序。我创建了一个codepen
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
ReactDOM.render(<App boxes="9" />, document.getElementById('root'));
App.js
import React, { Component } from 'react';
import Box from './Box';
import './App.css';
class App extends Component {
constructor(props) {
super(props);
this.play = this.click.bind(this);
this.boxes = [];
for (let i = 0; i < props.boxes; i++) {
this.boxes.push(<Box key={i} onClick={this.play} />);
}
}
click() {
console.log('called click');
}
render() {
return <div className="App">{this.boxes}</div>;
}
}
export default App;
但是,如果我在渲染函数中绑定 onClick 函数,或者即使我在 Box.js 中调用 onClick 属性,它也可以正常工作
Box.js
import React, { Component } from 'react';
import './Box.css';
class App extends Component {
render() {
return <div className="box">{this.props.display}</div>;
// return (
// <div onClick={this.props.onClick} className="box">
// {this.props.display}
// </div>
// ); -- this helps me trigger the event handler on App component
}
}
export default App;
你能帮我添加事件处理程序而不指定两次 onclick 处理程序,即在 App 组件和 Box 组件上
【问题讨论】:
标签: reactjs