не может отобразить плоский список из массива значений без ключей / идентификатора в React-Native

Многие ответчики дали объяснение do{(...)break;}while(false). Я хотел бы дополнить эту картину еще одним примером реальной жизни.

В следующем коде мне пришлось установить перечислитель operation на основе адреса, на который указывает указатель data. Поскольку ящик коммутатора может использоваться только для скалярных типов, я сначала сделал это неэффективно

if (data == &array[o1])
    operation = O1;
else if (data == &array[o2])
    operation = O2;
else if (data == &array[on])
    operation = ON;

Log("operation:",operation);

Но поскольку Log () и остальная часть кода повторяются для любого выбранного значения операции, я блуждал, как чтобы пропустить остальные сравнения, когда адрес уже обнаружен. И вот здесь do{(...)break;}while(false) пригодится.

do {
    if (data == &array[o1]) {
        operation = O1;
        break;
    }
    if (data == &array[o2]) {
        operation = O2;
        break;
    }
    if (data == &array[on]) {
        operation = ON;
        break;
    }
} while (false);

Log("operation:",operation);

Можно задаться вопросом, почему он не мог сделать то же самое с break в выражении if, например:

if (data == &array[o1])
{
    operation = O1;
    break;
}
else if (...)

break взаимодействует исключительно с ближайшим замкнутым контуром или переключателем, будь то тип for, while или do .. while, поэтому, к сожалению, это не сработает.

0
задан ganeshdeshmukh 19 March 2019 в 08:19
поделиться

1 ответ

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

 _renderItem = (item, index) => {
    console.log(item, index);
    return (
      <View key={index}>
        <View>
          <Text>Time ago</Text>
          <Text>@username</Text>
        </View>

        <View>
          <Image
            source={{
              // uri:
              //   "https://source.unsplash.com/random/500x" +
              //   Math.floor(Math.random() * 800 + 500)

              uri: "https://source.unsplash.com/random/500x800/"
            }}
            style={styles.profilephoto}
          />
        </View>

        <View>
          <Text>Caption of post</Text>
          <Text>View all Comments</Text>
        </View>
      </View>
    )
  }

  render() {
    let i = 0;
    return (
      <View style={styles.container}>
        <View style={styles.header}>
          <Text> feed </Text>
        </View>        

        <FlatList
          refreshing={this.state.refresh}
          onRefresh={this.loadNew}
          data={this.state.photo_feed}
          keyExtractor={(item, index) => "" + index}
          style={styles.flatlist}
          renderItem={this._renderItem}
        />
      </View>
    );
  }
0
ответ дан 2 revs 19 March 2019 в 08:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: