如果您使用的是ES6,下面是一些简单的示例代码:
import React from 'wherever_react_is';
class TestApp extends React.Component {
getComponent(event) {
console.log('li item clicked!');
event.currentTarget.style.backgroundColor = '#ccc';
}
render() {
return(
<div>
<ul>
<li onClick={this.getComponent.bind(this)}>Component 1</li>
</ul>
</div>
);
}
}
export default TestApp;
在ES6类主体中,函数不再需要'function'关键字,也不需要用逗号分隔。如果愿意,也可以使用=>语法。
这是带有动态创建的元素的示例:
import React from 'wherever_react_is';
class TestApp extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [
{name: 'Name 1', id: 123},
{name: 'Name 2', id: 456}
]
}
}
getComponent(event) {
console.log('li item clicked!');
event.currentTarget.style.backgroundColor = '#ccc';
}
render() {
<div>
<ul>
{this.state.data.map(d => {
return(
<li key={d.id} onClick={this.getComponent.bind(this)}>{d.name}</li>
)}
)}
</ul>
</div>
);
}
}
export default TestApp;
注意,每个动态创建的元素应具有唯一的引用“键”。
此外,如果您想将实际数据对象(而不是事件)传递给onClick函数,则需要将其传递给绑定。例如:
新的onClick功能:
getComponent(object) {
console.log(object.name);
}
传递数据对象:
{this.state.data.map(d => {
return(
<li key={d.id} onClick={this.getComponent.bind(this, d)}>{d.name}</li>
)}
)}
event.currentTarget.style.backgroundColor = '#ccc';
除非您真正了解自己在做什么(大多数时候,在集成第三方小部件时)。