da2k / curso-reactjs-ninja

915 stars 322 forks source link

M1A09 - Dúvida sobre o getDefaultProps #503

Closed arrudacaio closed 4 years ago

arrudacaio commented 4 years ago
import React from 'react';

const Title = ({name}) => {
    return (
        <h1>{name || 'Desconhecido'}</h1>
    )
}

export default Title;

Seria essa a forma correta de utilizar o getDefaultProps atualmente? Pois pelo que pesquisei, eu entendi que o getDefaultProps não é mais utilizado.

@fdaciuk

fdaciuk commented 4 years ago

Oi @arrudacaio! Nessa aula você ainda está vendo sobre o createClass, que deve ser utilizado, por exemplo, quando você quer aplicar o React aos poucos em um projeto já existente, e que ainda não tenha uma ferramenta de transpilação de código para ES6+.

O createClass existe para suportar a sintaxe do ES5, então o getDefaultProps continua válido.

Mais pra frente nós vamos falar de classes, componentes criados com função, etc., e eu vou mostrar o defaultProps, que também pode continuar sendo utilizado.

Mas, quando usamos componentes de função, hoje temos uma nova feature em JavaScript que são os default parameters. Com isso, nós conseguimos definir valores para os parâmetros de uma função no momento da sua declaração, sem a necessidade do defaultProps. A forma correta de usar é:

const Title = ({ name = 'Desconhecido' }) => {
  return (
    <h1>{name}</h1>
  )
}

Os dois formatos funcionam, mas hoje eu recomendo você usar o default parameters, já que é nativo da linguagem :)

Mas para o createClass, como a ideia é manter compatibilidade com ES5, então é preciso usar o getDefaultProps.

Ficou claro? :)

arrudacaio commented 4 years ago

Ficou super claro! Valeu!

fdaciuk commented 4 years ago

Show! Qualquer dúvida, só avisar :)