Я делаю учебник по списку дел в реакции, и он терпел неудачу, потому что я написал что-то вроде этого:
class TodoItems extends Component {
createTasks(item) { // define it as a function
// using “this” here breaks the app
...
}
}
И правильный способ сделать это -
class TodoItems extends Component {
createTask = (item) => { // using a lambda
// using this here is ok
...
}
}
Пример исходного кода: https://github.com/therj/react-todo (в частности здесь )
Почему this
не определено в первом?
Я пытался объявить класс с помощью интерпретатора узла, но приглашение никогда не вернулось
> class A {}
undefined
> class TodoItems /*extends Component*/ {
... createTasks= (item) => {
..... return (
....... <li key={item.key} onClick={() => this.props.deleteItem(item.key)}>
....... {item.text}
.......
... </li>
... )
... }
...
... render() {
... const todoEntries = this.props.entries
... const listItems = todoEntries.map(this.createTasks)
... return <ul className="theList">{listItems}</ul>
... }
... }
...
...
>
(To exit, press ^C again or type .exit)
Не уверен, связано ли это с реакцией, es6 или чем-то еще.