Как объединить компоненты JSX в React Native

Например, я хочу показать список имен. Итак, я хотел сделать что-то вроде этого:

var returnValue;
for (eachName of _names) {
  returnValue += (
  <TouchableHighlight
    onPress={() => this._onPressButton}>
      <Text>
      {eachName}
      </Text>
  </TouchableHighlight>);
}
return returnValue;

Однако это недействительно. Это подводит меня к моему вопросу: как мне объединить динамическое количество компонентов JSX в React Native.


person Isaac Paul    schedule 30.04.2015    source источник


Ответы (2)


Цифры Я понимаю это, как только я спрашиваю stackoverflow. Код нужно поместить в массив:

var returnValue = [];
for (var i = 0; i < _names.length; i++) {

  returnValue.push(
  <TouchableHighlight onPress={() => this._onPressButton}>
      <Text>
      {_names[i]}
      </Text>
  </TouchableHighlight>);
}
return returnValue;

Здесь также есть дополнительная информация: http://facebook.github.io/react/docs/multiple-components.html#dynamic-children

person Isaac Paul    schedule 30.04.2015
comment
круто, спасибо. Я полагаю, что вместо этого вы можете принять свой ответ, очевидно, это тот, который люди ищут, когда приходят к этому вопросу. - person lakesare; 18.06.2016
comment
Отличная работа. Я бы никогда не подумал о массиве элементов как о возможном решении. - person reinaldoluckman; 23.08.2017
comment
Привет, ребята, я получаю сообщение об ошибке: должен быть возвращен действительный элемент React (или null). Возможно, вы вернули undefined, массив или другой недопустимый объект. :( - person GONeale; 19.09.2017
comment
Я объединил с помощью returnValue += ..., но это не сработает (на экране будет отображаться что-то вроде [объект]...). Исправлено с помощью returnValue.push( ..., как в этом ответе. - person Jonny; 23.12.2019

Может быть, более элегантный способ:

return <View>
{_names.map((eachName) => {
  return (
    <TouchableHighlight onPress={() => this._onPressButton}>
      <Text>
      {eachName}
      </Text>
    </TouchableHighlight>
  );
})}
</View>
person Yinfeng    schedule 02.05.2015
comment
Хотя я согласен, что этот подход банален, он не способен решить все проблемы (иначе я бы не искал здесь альтернативы) - person Fábio Dias; 12.12.2017