Добавить элементы в массив с картой?

У меня есть массив, который я получаю из реквизита: this.arrayContenido = this.props.children;. Если я console.info это, у меня есть такой массив: https://puu.sh/Dlsce.png

хорошо, мне нужно разделить этот массив, чтобы анимировать их с помощью gsap. Я сопоставил этот массив и присвоил каждому элементу этого массива новый массив (this.children =[] в конструкторе):

{this.arrayContenido.map(function(item, i) {
                return (
                  <div key = {i}  ref = {div => (this.childrens[i] = div)}>
                    {item}
                  </div>
                );
              })}

Почему, когда я делаю console.info в componentDidMount для this.childrens, у меня неопределенные результаты?

Опечатка? Ваш код говорит this.childrens[i] Множественное число от «ребенок» — «дети», у вас есть «детис»

Chris G 29.04.2019 12:26

Я не понимаю что вы говорите :(

user10637450 29.04.2019 12:28

В коде вы используете this.childrens, но в объяснении вы написали this.children. Обратите внимание на s

Olian04 29.04.2019 12:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
109
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Похоже, у вас проблемы с this. Вы можете использовать функцию стрелки, чтобы получить правильный this

{
  this.arrayContenido.map((item, i) => {
    return (
      <div key = {i} ref = {div => (this.childrens[i] = div)}>
        {item}
      </div>
    );
  });
}

Это предполагает, что этот код находится в функции render или любой функции с правильным this, который является компонентом.

Первая проблема — это анонимная функция без привязки, this не будет тем, что вы ожидаете внутри нее, и поэтому this.children будет неопределенным. Вместо этого вы можете использовать функцию стрелки, которая обеспечивает автоматическую привязку:

{this.arrayContenido.map((item, i) => {
    return (
        <div key = {i}  ref = {div => (this.childrens[i] = div)}>
            {item}
        </div>
    );
})}

Вы уже использовали функцию стрелки в реквизите ref, но не в окружающей анонимной функции...

Вторая проблема связана с this.props.children: его не следует рассматривать как массив. Если вы хотите перебирать дочерние элементы компонента React, вы должны использовать React.Children.map(this.props.children, () => ....)

посмотрите React.Дети для более подробной информации.

Другие вопросы по теме