因此,我开始使用React和ES6并掌握了非常基础的知识。真的感谢一些帮助。
handleClick()引发错误:
Uncaught TypeError: Cannot read property 'handleClick' of undefined
代码如下
export default class MenuItems extends React.Component { constructor(props) { super(props) this.state = {active: false} this.handleClick = this.handleClick.bind(this) } handleClick() { this.setState({ active: !this.state.active }); } render() { let active = this.state.active let menuItems = [{text: 'Logo'}, {text: 'promo'}, {text: 'benefits'}, { text: 'form'}] return ( <ul> {menuItems.map(function(item) { return <li className={active ? 'active' : ''} onClick={this.handleClick.bind(this)} key={item.id}>{item.text}</li>; })} </ul> ); } }
{menuItems.map(function(item) { return <li className={active ? 'active' : ''} onClick={this.handleClick.bind(this)} key={item.id}>{item.text}</li>; })}
由于您的代码处于严格模式下(模块始终处于严格模式下), this因此undefined在传递给的函数中.map。
this
undefined
.map
您要么必须通过将第二个参数.map传递给来显式设置上下文:
{menuItems.map(function(item) { // ... }, this)}
或使用箭头功能:
{menuItems.map( item => <li className={active ? 'active' : ''} onClick={this.handleClick.bind(this)} key={item.id}>{item.text}</li> )}