Quindi ho iniziato con React ed ES6 e sono rimasto bloccato con le nozioni di base. Apprezzo davvero un po 'di aiuto.React 0.13 metodo di classe non definito
handleClick() genera un errore:
Uncaught TypeError: Cannot read property 'handleClick' of undefined
codice segue
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>
);
}
}
Questo mi ha aiutato grazie. Un'altra cosa: perché 'attivo' viene aggiunto a tutti i li? Il comportamento previsto è stato solo aggiungendo a uno. – walkthroughthecode
* "Il comportamento previsto era solo l'aggiunta a uno." * Hai una singola variabile 'active' per tutti gli elementi' li'. Dovete dare a ogni 'li' il proprio stato (rendetene il proprio componente), o memorizzare qualcosa che identifichi l'elemento' li' attivo, non solo 'true' e' false'. Btw, dato che il tuo binding 'handleClick' all'interno del costruttore,' onClick = {this.handleClick} 'è sufficiente. –
Grazie, ora è più o meno chiaro :) – walkthroughthecode