Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro na criação do constructor() e componentDidMount()

Boa noite!

Estou utilizando a versão 0.60.5 do react native e sua estrutura é um pouco diferente da apresentada no curso. Diante disso, tenho tomado um erro simples quando na construção dos métodos contructor() e componentDidMount() para estabelecer conexão com a API. Segue:

const App = () => {

  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}));
  }

  return (

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

Erro:

error: bundling failed: SyntaxError: C:\InstaluraMobile\App.js: Unexpected token, expected ";" (11:16)

   9 | const App = () => {
  10 |
> 11 |   constructor() {
     |                 ^
  12 |     super();
  13 |     this.state = {
  14 |       fotos : []
    at Object.raise (C:\InstaluraMobile\node_modules\@babel\parser\lib\index.js:6387:17)
    at Object.unexpected (C:\InstaluraMobile\node_modules\@babel\parser\lib\index.js:7704:16)
    at Object.semicolon (C:\InstaluraMobile\node_modules\@babel\parser\lib\index.js:7686:40)
    at Object.parseExpressionStatement (C:\InstaluraMobile\node_modules\@babel\parser\lib\index.js:10435:10)
    at Object.parseExpressionStatement (C:\InstaluraMobile\node_modules\@babel\parser\lib\index.js:2052:18)
    at Object.parseStatementContent (C:\InstaluraMobile\node_modules\@babel\parser\lib\index.js:10034:19)
    at Object.parseStatement (C:\InstaluraMobile\node_modules\@babel\parser\lib\index.js:9900:17)
    at Object.parseStatement (C:\InstaluraMobile\node_modules\@babel\parser\lib\index.js:2025:26)
    at Object.parseBlockOrModuleBlockBody (C:\InstaluraMobile\node_modules\@babel\parser\lib\index.js:10476:25)
    at Object.parseBlockBody (C:\InstaluraMobile\node_modules\@babel\parser\lib\index.js:10463:10)

Onde estou errando?

Obrigado!

1 resposta
solução!

Boa noite, César! Como vai?

Vc precisa transformar o App num class component, exatamente como visto no curso:

import React, { Component } from 'react';

export default class App extends Component {

  constructor() {
    // Código omitido.
  }

  componentDidMount() {
    // Código omitido.
  }

  render() {
    // Código omitido.
  }
}

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software