how to get the 'e.key' of li element in react.js?
I just can't get the event target
e.key
, what's wrong with this?
Anybody can help me with this problem?
online playaround link!
// import React, {Component} from 'react';
// import PropTypes from 'prop-types';
class RMT extends React.Component {
constructor(props) {
super(props);
this.state = {
data: this.props.data || []
};
}
// 递归调用
markNode = (data) => {
let nodes;
if (Object.prototype.toString.call(data) == "[object Array]") {
nodes = data.map(
(item) => {
let node = (
<li
key={this.count++}
style={{color: 'red'}}
onClick={(e) => this.props.onClick(e)}
>
<span>{item.text}</span>
</li>
);
if (item.children && item.children.length) {
node = (
<li
key={this.count++}
style={{color: 'green', marginLeft: '10px'}}
onClick={(e) => this.props.onClick(e)}
>
<span>{item.text}</span>
{this.markNode(item.children)}
</li>
);
}
return node;
}
);
}
return (
<ul style={{border: '1px solid red'}} onClick={this.props.onClick}>
{nodes}
</ul>
);
};
render() {
this.count = 0;
return(
this.markNode(this.state.data)
);
}
}
export {RMT};
export default RMT;
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
//
};
}
onClick = (e) => {
// 阻止事件的默认行为,防止事件冒泡!
e.preventDefault();
e.stopPropagation();
// alert(`e`, e.key);
console.log('e.key', e.key);
console.log('e.text', e.text);
console.log('e.innerHTML', e.innerHTML);
console.log('e.innerText', e.innerText);
};
render () {
const datas = [
{
text: 'root',
children: [
{
text: 'chlid1',
children: [
{
text: 'chlid3'
}
]
}
]
}
];
return (
<div>
<RMT data={datas} onClick={this.onClick}/>
</div>
);
}
}
export default App;
ReactDOM.render(
<div>
<App />
</div>
, mountNode
);
<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>