ReactNative — O que precisamos saber

Charleston A.
5 min readMay 6, 2021

--

1. O que é React?

React é uma biblioteca JavaScript open-source desenvolvida pelo Facebook, usada para construir interfaces front-end, voltada principalmente para aplicativos single page. React tem o foco na construção de componentes, o que ajuda a tornar o código reutilizável.

O React Native é um framework baseado em React, desenvolvido pela equipe do Facebook, que possibilita o desenvolvimento de aplicações mobile, tanto para Android, como para iOS, utilizando apenas Javascript.

2. Cite algumas funcionalidades do React.

  • Segue um fluxo de dados unidirecional, que é de cima para baixo na aplicação.
  • Utiliza componentes reutilizáveis para o desenvolvimento da UI da aplicação.

3. Quais são as vantagens do React?

  • Facilita a criação de componentes reutilizáveis para a interface da aplicação.
  • É de fácil integração com outros frameworks, por ser uma biblioteca de UI (sendo apenas o “V” — view — da arquitetura MVC).
  • Possui o padrão de sintaxe JSX, que facilita a criação de componentes de UI.

4. Quais as limitações do React?

  • React não é um framework completo, é apenas uma biblioteca, portanto geralmente não funciona sozinho.
  • Requer um boilerplate considerável, ou seja, um código mínimo inicial, geralmente com ferramentas de build, além da própria biblioteca do React, o que gera um certo peso e trabalho, mesmo para fazer uma aplicação bastante simples.
  • Curva de aprendizado pode ser difícil para iniciantes, pois dependendo da referência, o React introduz um novo paradigma para construção de aplicações.
  • O código pode ficar bastante complexo quando aliado à estilização inline.

5. O que é JSX?

JSX é uma abreviação de JavaScript XML. Em termos simples, é código JavaScript que utiliza o estilo de sintaxe do HTML para tornar o código mais fácil de entender. Por debaixo dos panos, o código JSX se transforma no React.createElement(), que gera os elementos DOM que estamos acostumados. Abaixo um exemplo de código JSX:

<View styles={{styles.btn}} onClick={ ()=> onClick()}>Login</View>

6. Como se cria Higher Order Components (HOCs) em React?

Higher Order Components em React são criados através de uma função que recebe como parâmetro um componente, e retorna um novo componente.

É basicamente uma forma de reutilizar a lógica de um componente, encapsulando-o com uma função e gerando dinamicamente um novo componente.

Você pode usar HOCs para o seguinte:

  • Injetar ou manipular props e state.
  • Alterar a renderização do componente.
  • Reutilizar ou abstrair a lógica de um componente existente.

7. O que é state em React?

State é um objeto JavaScript que mantém o estado de um componente em React, ou seja, ele mantém todas as informações que aquele componente precisa durante seu ciclo de vida.

O objeto state é imutável, individual, e não é compartilhado entre outros componentes.

8. Por que não podemos alterar o objeto state diretamente?

Alterar o objeto state diretamente não vai disparar render().

O correto é usar o método setState(), que agenda uma nova atualização de state e em seguida renderiza novamente o componente.

9. Pra que serve o segundo argumento de setState?

O segundo argumento de setState é uma função callback, que é chamada quando o método setState() finaliza e o componente é re-renderizado, já que setState() é um método assíncrono.

É importante usar este callback quando você precisar garantir que aquele trecho de código deve ser executado sempre depois que o state foi devidamente atualizado.

10. O que faz o método render?

O método render() do React.Component é responsável por gerar o novo DOM daquele componente.

Basicamente, este método renderiza o componente de acordo com o estado e propriedades atuais. Por padrão, ele é chamado sempre que o objeto props ou state é alterado.

11. O que são props em React?

Props são as propriedades dos componentes. A nomenclatura e a forma de atribuição é similar aos atributos HTML. O papel das props é passar informações do componente “pai” para os componentes “filho” e chamar a mudança de estado de componentes.

12. O que são keys em React?

Uma key é um tipo especial de prop. Ela é definida por uma string e é usada pelo React no algoritmo de diferenciação para identificar mudanças no DOM Virtual.

É comum utilizar a propriedade key em arrays de componentes, para que o React tenha um comportamento estável quanto à cada item de uma lista

13. O que é Flux?

Flux é um paradigma que difere do MVC tradicional. Apesar de existirem bibliotecas que implementam o Flux, o Flux em si não é uma biblioteca.

Flux usa o padrão unidirecional de fluxo de dados do React em uma arquitetura que se baseia em store, dispatcher e action.

14. O que é Redux?

Redux é uma biblioteca usada para manter todo o estado da aplicação em um mesmo container, que então é passado para todos os componentes da aplicação, de forma unidirecional. Redux usa o conceito de store, action e reducer:

  • Store: É onde o estado da aplicação é salvo. É imutável e garante que todos os componentes tenham um estado consistente, em uma estrutura previsível.
  • Actions: É um objeto que descreve que tipo de ações podem acontecer para alterar o estado do store.
  • Reducers: São funções que pegam o estado atual + a ação despachada e retornam um novo estado para a aplicação.

15. O que são arrow functions? Qual a vantagem no React?

Arrow functions foram introduzidas no ES6 e são uma forma de abreviar a sintaxe da função padrão com function() {}.

Diferente da sintaxe padrão, as arrow functions não tem seu próprio contexto (this, arguments, super). Elas são úteis também como “higher order functions”, ou seja, funções que englobam outras funções, o que no React é legal, pois dispensa o uso de binding.

Sintaxe de uma arrow function:

const soma = (a, b) => {
return a + b;
}

Arrow como higher order function:

render() {
<View onChange={ (event) => { this._onChange(event) } } />
}

16. Quais as diferenças entre class Component e functional Component?

Class Components são instanciados por uma classe JavaScript e permitem funcionalidades adicionais, como ter métodos específicos e principalmente, manter um state interno.

/* Exemplo de um stateless class component */
class App extends React.Component {
render() {
return <div>Hello world!</div>
}
}
/* Exemplo de um stateful class component */
class App extends React.Component {
constructor(props) {
super(props);

this.state = {
message: 'Hello World'
}
}
render() {
return <div>{ this.state.message }</div>
}
}

Class Components podem ou não ter state, como no exemplo acima.

functional Components são instanciados por uma função, que é basicamente um render, portanto por padrão eles não possuem state, mas podem possuir props.

import { View } from 'react-native';const App = (props) => (
<View>Hello World</View>
)

Você pode ter state em functional Components através de Hooks:

import React, { useState } from 'react';
import { TextInput, View } from 'react-native';
const App = (props) => {
const [ message, setMessage ] = useState('Hello World');

return <View>
{ message }
<TextInput styles={{styles.text}} value={ message } onChangeText={text => setMessage(text)} />
</View>
}

--

--

No responses yet