2016-02-27 2 views
0

В настоящее время я ищу для рендеринга нескольких элементов внутри класса путем циклического прохождения массива, который был передан через реквизиты Владельца этого компонента. Вот пример:Ошибка при попытке визуализации нескольких ReactElements путем сопоставления массива

render() { 
    return (
     <div style={this.styles.container}> 
      {this.props.matchup 
       ? this.renderMatchupWithTeams(this.props.matchup) 
       : this.renderDefaultMatchup()} 
     </div> 
    ) 
} 

, а затем ...

renderMatchupWithTeams(matchup) { 
    console.log('renderMatchupWithTeams', matchup); 
    return matchup.map(team => { 
     console.log(`team: ${team.name}, seed: ${team.seed}`); 
     return (
      <Team name="UCLA" 
         seed={matchup.seed}/> 
     ) 
    }); 
}; 

Бревна были включены, чтобы подчеркнуть тот факт, что значения возвращающегося, как ожидается, в журналах, но компонент команды не ,

Любые идеи относительно того, почему компонент не выполняет рендеринг, как ожидалось? Обратите внимание, что forEach дает тот же результат, что и карта в этом случае.

** Код был обновлен, чтобы отразить правильный ответ **

+1

Функция 'renderMatchupWithTeams' возвращает значение undefined. Вы должны прочитать о том, как работает 'Array # map'. Если вы вернете matchup.map, все начнет работать. – Interrobang

ответ

2

Общий контроль с моей стороны. Конечно, когда .map() применяется к массиву, новый массив равен , прогнозируемому. Таким образом, мы должны вернуть matchups.map, чтобы получить новое значение (массив), которое создается (проецируется).

+0

Приложите ли вы фиксированный код и примите этот ответ? Таким образом, это может помочь будущим посетителям. – Pavlo

+0

Абсолютно. См. Отредактированный код и комментарий выше. –

+0

Вы не должны редактировать исходный код без редактирования остальной части вашего вопроса; теперь похоже, что вы используете рабочий код, и поэтому ваша проблема не имеет смысла. Возможно, оставите исходный код так, как есть, а затем добавьте сноску с небольшим сообщением, в котором говорится, что вы поняли свою ошибку и добавили рабочий код с объяснением, или просто поместите рабочий код в этот ответ и оставите исходный вопрос без изменений. (Принятие этого ответа, предложенное Павлом, тоже было бы неплохо) – philraj

Смежные вопросы