Cursos / Informática para Internet / Desenvolvimento para Dispositivos Móveis / Aula
Dando sequência à listagem dos itens, vamos agora finalizar a definição do FlatList.
Em nosso componente de listagem precisamos passar uma propriedade que seja um outro componente que represente a renderização de um item.
Acompanhando a aula, implemente o componente abaixo:
const Item = (props) => {
return (
<View>
<Image style={styles.img} source={{ uri: props.item.foto }}> </Image>
<Text style={styles.titulo}>{props.item.titulo}</Text>
</View>
)
}
Agora utilizaremos o componente criado no FlatList para listar os dados. Além de passar esse componente no renderItem, iremos passar a keyExtractor para identificação única de cada objeto da lista.
Veja abaixo:
<View style={styles.item}>
<Image style={styles.img} source={{ uri: props.item.foto }}> </Image>
<Text style={styles.titulo}>{props.item.titulo}</Text>
</View>
Com os itens listados, realizaremos agora uma estilização para melhoria da visualização dos posts. Acompanhe a aula e implemente o código.
Ao final, seu arquivo deve estar como abaixo:
import React, { useEffect, useState } from 'react'
import { View, StyleSheet, FlatList, Image, Text } from 'react-native'
const Item = (props) => {
return (
<View style={styles.item}>
<Image style={styles.img} source={{ uri: props.item.foto }}> </Image>
<Text style={styles.titulo}>{props.item.titulo}</Text>
</View>
)
}
export default function Home() {
const [posts, setPosts] = useState([])
const [isLoading, setLoading] = useState(true)
const getPostsAPI = async () => {
try {
setLoading(true)
const response = await fetch('https://dev-backend-imd.herokuapp.com/api/posts')
const posts = await response.json()
setPosts(posts.posts)
} catch (error) {
alert('Falha ao carregar postagens. Tente novamente mais tarde.')
setPosts([])
} finally {
setLoading(false)
}
}
useEffect(() => {
getPostsAPI()
}, [])
return (
<View style={styles.container}>
<FlatList style={styles.lista} data={posts} renderItem={({ item }) => <Item item={item} />} keyExtractor={(item) => "#" + item.id}></FlatList>
</View>
)
}
const styles = StyleSheet.create({
container: {
width: '100%',
height: '100%',
backgroundColor: 'black'
},
item: {
backgroundColor: 'black'
},
img: {
width: '100%',
height: 250
},
titulo: {
fontSize: 16,
fontWeight: '700',
marginVertical: 10,
color: 'white'
},
lista: {
flex: 1,
marginTop: 44
}
})
Versão 5.3 - Todos os Direitos reservados