wal*_*ode 7 javascript ecmascript-6 reactjs
所以我从React和ES6开始,并且陷入了非常基础的困境.真的很感激一些帮助.
handleClick()抛出一个错误:
Uncaught TypeError: Cannot read property 'handleClick' of undefined
Run Code Online (Sandbox Code Playgroud)
代码如下
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>
);
}
}
Run Code Online (Sandbox Code Playgroud)
Fel*_*ing 12
{menuItems.map(function(item) {
return <li className={active ? 'active' : ''} onClick={this.handleClick.bind(this)} key={item.id}>{item.text}</li>;
})}
Run Code Online (Sandbox Code Playgroud)
因为您的代码处于严格模式(模块始终处于严格模式), this所以undefined在您传递给的函数内部.map.
{menuItems.map(function(item) {
// ...
}, this)}
Run Code Online (Sandbox Code Playgroud)
或使用箭头功能:
{menuItems.map(
item => <li className={active ? 'active' : ''} onClick={this.handleClick.bind(this)} key={item.id}>{item.text}</li>
)}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1330 次 |
| 最近记录: |