React Native FlatList не отображает элементы - PullRequest
0 голосов
/ 28 октября 2019
<Query
      query={FETCH_EVENTS}>
      {
        ({data, error, loading }) => {
          if (loading) return null;
          if (error) {
            console.error(error);
            return <Text>An error occured</Text>;
          }
          if (!data.allEvents) return null;
          return(
            <FlatList
              style={{flex: 1}}
              data={data.allEvents}
              renderItem={({ item }) => {
                <EventCard
                  event={item}
                  key={item.id}
                  latitude={latitude}
                  longitude={longitude}
                  />
              }}
              keyExtractor={item => item.id}
            />
          )
        }
      }
    </Query>

Приведенный выше код неожиданно перестал работать без видимой причины, я не могу понять, почему FlatList больше не отображает элементы.

Когда я заменяю FlatList непосредственно следующим компонентом, он работает и визуализируется, поэтому проблема должна быть связана не с компонентом, а с FlatList.

return(
            <EventCard
              event={data.allEvents[0]}
              key={data.allEvents[0].id}
              latitude={latitude}
              longitude={longitude}/>
          )

Ответы [ 2 ]

3 голосов
/ 28 октября 2019

Вы забыли вернуть заявление в renderItem

Попробуйте это

               <FlatList
                  style={{flex: 1}}
                  data={data.allEvents}
                  renderItem={({ item }) => {
                 return(
                    <EventCard
                      event={item}
                      key={item.id}
                      latitude={latitude}
                      longitude={longitude}
                      />);
                  }}
                  keyExtractor={item => item.id}
                />

или

        <FlatList
                  style={{flex: 1}}
                  data={data.allEvents}
                  renderItem={({ item }) => 

                    <EventCard
                      event={item}
                      key={item.id}
                      latitude={latitude}
                      longitude={longitude}
                      />
                  }
                  keyExtractor={item => item.id}
                />

оба вышеуказанных решения должны работать

2 голосов
/ 28 октября 2019

Вы не возвращаете карту EventCard

renderItem={({ item }) => (
            <EventCard
              event={item}
              key={item.id}
              latitude={latitude}
              longitude={longitude}
              />
 )}

Вместо

renderItem={({ item }) => {
            <EventCard
              event={item}
              key={item.id}
              latitude={latitude}
              longitude={longitude}
              />
  }}
...