Как вставить скрипт между реагирующими нативными тегами - PullRequest
0 голосов
/ 24 октября 2019

Я строю список стилей из двух столбцов (2 * x). где он заполняет кнопки из API.

Я пытаюсь добавить во второй столбец условие if (если данные в null пропускают создание кнопки)

Пожалуйста, посоветуйте, как добавить условие if между тегами.

В рендере

  Elementlist.push(
    <View style={styles.RowElement}>
      <View style={styles.Column}>
        <TouchableOpacity onPress={() => this.props.navigation.navigate("elementDetails")}>
          <Text>{state.elementID[x]}</Text>
        </TouchableOpacity>
      </View>
      <View style={styles.Column}>
        <TouchableOpacity onPress={() => this.props.navigation.navigate("elementDetails")}>
          <Text>{state.elementID[x + 1]}</Text>
        </TouchableOpacity>
      </View>
    </View>)
  x = x + 1;
  if (this.state.UnitsID[x + 1] == null) { break; }
}

В ответ

      <ScrollView>
        {Unitslist}
      </ScrollView>

1 Ответ

0 голосов
/ 24 октября 2019

React Native FlatList уже имеет эту функцию со свойством numColums.

https://facebook.github.io/react-native/docs/flatlist#numcolumns

Таким образом, вы можете легко применить к вашему делу.

Пример:

import React from 'react';
import { SafeAreaView, View, FlatList, StyleSheet, Text } from 'react-native';
import Constants from 'expo-constants';

const DATA = [
  {
    id: 'bd7acbea-c1b1-46c2-aed5-3ad53abb28ba',
    title: 'First Item',
  },
  {
    id: '3ac68afc-c605-48d3-a4f8-fbd91aa97f63',
    title: 'Second Item',
  },
  {
    id: '58694a0f-3da1-471f-bd96-145571e29d72',
    title: 'Third Item',
  },
    {
    id: '58694a0f-3da1-471f-bd96-145571e29d73',
    title: 'Fourth Item',
  },
];

function Item({ title }) {
  return (
    <View style={styles.item}>
      <Text style={styles.title}>{title}</Text>
    </View>
  );
}

export default function App() {
  return (
    <SafeAreaView style={styles.container}>
      <FlatList
        numColumns={2}
        data={DATA}
        renderItem={({ item }) => <Item title={item.title} />}
        keyExtractor={item => item.id}
      />
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop: 10
  },
  item: {
    backgroundColor: '#f9c2ff',
    padding: 20,
    marginVertical: 8,
    marginHorizontal: 16,
  },
  title: {
    fontSize: 16,
  },
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...