da2k / curso-reactjs-ninja

915 stars 322 forks source link

React não está reconhecendo o as props #560

Closed thg-nunes closed 3 years ago

thg-nunes commented 3 years ago

Qual é o erro de código @fdaciuk ? Trata-se do vídeo da seção 3 M1A#09

A seguir tem-se a parte de renderização do app:
import React from "react"
import Prop from "./props"

const App = React.createClass({
  render: function () {
    return (
      <div>
        <Prop name='thiago'/>
      </div>
    )    
  }
})

export default App

Aqui tenho a tentativa de pegar a prop name, porém sem sucesso. 
import React from 'react'

const Prop = React.createClass({
  render: () => {
    return (
      <h1>Olá {this.props.name}!</h1>
    )
  }
})

export default Prop

@fdaciuk

fdaciuk commented 3 years ago

Oi @devthiagoNunes! O problema é que você está criando a função do render como arrow function. Como o método render depende do this, você não pode usar arrow function nesse caso: ou você usa function "comum", ou usa a nova sintaxe de criar métodos em objetos, nesse formato:

const App = React.createClass({
  render () {
    // aqui o código do render
  }
})

Mais pra frente no curso eu ainda vou falar sobre as arrow functions, mas se você quiser entender mais sobre essa parte de contexto ao usar arrow functions antes de chegar na aula onde vamos falar disso, eu escrevi um post que pode te ajudar: https://blog.da2k.com.br/2019/01/07/javascript-tudo-sobre-arrow-functions/

thg-nunes commented 3 years ago

Revisando o código encontrei o erro, acontece que não tinha atualizado o index.html de /dist/bundle.js para /static/bundle.js, que é onde o react "assiste as modificações" dos arquivos... Porém, com seu comentário, já aprendi algo que não sabia, entao valeu a pena do mesmo jeito, obrigado mestre.

fdaciuk commented 3 years ago

Show @devthiagoNunes! Qualquer dúvida, só avisar :D