@seredaes

Как передать функцию в родительский компонент?

5a5d2339f0e91107390669.png5a5d23445220a695436710.png5a5d2349b9c6a737743926.png

Не могу решить данную проблему. Поиск пока не привел к ответу.
Пробовал и так по одной из переписок на StackOverflow:
In parent component constructor add the following line:
this.updateState = this.updateState.bind(this)

Результата ноль. Что я делаю не так...?
Подскажите хорошие уроки или книгу пожалуйста.
  • Вопрос задан
  • 236 просмотров
Пригласить эксперта
Ответы на вопрос 3
rockon404
@rockon404 Куратор тега React
Frontend Developer
Вопрос поставлен неправильно, так как вы передаете функцию в дочерний компонент, а не в родительский.

Вам по-хорошему надо использовать arrow function и таких проблем возникать не будет:
this.state.title.map((item, i) => (
  <TodoList
    key={i}
    index={i}
    deleteItem={descriptionArr[i]}
    title={titleArr[i]}
    deleteItem={this.deleteItem}
  />
))

Тот способ, которым вы решили проблему в React сообществе использовать не принято.

Сама проблема в том, что контекст обычной функции(написанной через ключевое слово function) ссылается в strict режиме на undefined, в обычном на window.

Вам необходимо разобраться c основами JS и с синтаксисом ES6. Есть для этих целей хороший ресурс learn.javascript.ru
Вашем примере видно одну семантическую ошибку, вы назвали компонент описывающий задачу TodoList, его следовало назвать TodoItem.
То, что вы раздельно храните массивы с title и description - ужаснейшее архитектурное решение, храните задачи в виде массива объектов, описывающих сущность Todo:
[
  {
    title: 'title',
    description: 'description',
  },
  {
    title: 'title',
    description: 'description',
  },
  {
    title: 'title',
    description: 'description',
  }
]
Ответ написан
@Listrigon
У вас скорее всего this ссылается на что-то другое в момент срабатывания события, а не на текущий компонент.
Ответ написан
@seredaes Автор вопроса
Нашел ответ на вопрос :)

5a5d2b5b540ee102259784.png5a5d2b96bc11e798784237.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы