1
resposta

A imagem não aparece no emulador do iOS

Meu código está idêntico ao da aula mas as imagens não aparecem no emulador do iOS. Se eu colocar a url em um , a url é impressa. Se eu colocar essa url no navegador, abre normalmente. Mesmo se eu colocar em source o endereço manualmente, a imagem não aparece. Se eu colocar o "this.props.foto.urlPerfil", também não aparece. O que estou vendo é que o app não está exibindo imagens externas.

App.js

...
export default class InstaluraMobile extends Component {

        constructor() {
            super();
            this.state = {
                fotos: []
            }
        }

        componentDidMount() {
            fetch('https://instalura-api.herokuapp.com/api/public/fotos/rafael')
                .then(resposta => resposta.json())
                .then(json => this.setState({fotos: json}));
        }

        render() {
            return (
                <FlatList style={styles.container}
                    keyExtractor={item => String(item.id)}
                    data={this.state.fotos}
                    renderItem={ ({item}) =>
                        <Post foto={item}/>
                    }
                />
            );
        }
    }
...

Post.js

...
export default class Post extends Component {
        render() {
            return(
                <View>
                    <View style={styles.header}>
                        <Image source={{uri: this.props.foto.urlPerfil}}
                                style={styles.fotoDePerfil} />
                        <Text>{this.props.foto.loginUsuario}</Text>
                        <Text>{this.props.foto.urlPerfil}</Text>
                    </View>
                    <Image source={{uri: this.props.foto.urlFoto}}
                        style={styles.foto} />
                </View>
            );
        }
    }
...
1 resposta

Valdenir, boa tarde! Quando você passa props para super, eles são atribuídos ao this. Dê uma olhada no seguinte cenário:

construtor (props) {
    super();
    console.log (this.props) // indefinido
}

No entanto, quando você faz:

construtor (props) {
    super (props);
    console.log (this.props) // props serão registrados.
}

Tente criar um contrutor pro componente Post como no exemplo acima

Espero ter ajudado e bons estudos!