Java

React 17 – Conheça o que vai mudar no JSX

React 17 – Conheça: Veja o que teremos de diferente no JSX a partir do React 17 e como isso irá influenciar suas aplicações daqui para frente. O React 17 teve lançamento e não trouxe nenhuma funcionalidade nova. Porém, ele veio com algo que vai mudar como o JSX funciona e um detalhe de como você lida com ele.

Como o JSX funcionava até agora (React 17 – Conheça)

Os navegadores não entendem JSX. Portanto, é necessário que uma ferramenta como Babel faça a “tradução” do JSX para JavaScript comum.

Isso significa que quando você escreve o seguinte código:

function MeuComponente(){
	return <div>Olá Web Developers!</div>;
}

Teremos o seguinte resultado:

function MeuComponente(){
	return React.createElement('div', null, 'Olá Web Developers!');
}

Note que o JSX é substituído por React.createElement(). Por consequência, mesmo que você não fosse usar algo do React, era necessário importá-lo:

import React from 'react';

function MeuComponente(){
	return <div>Olá Web Developers!</div>;
}

Caso você não importasse, você teria um erro na hora da transpilação. E muitos iniciantes no mundo do React já tiveram esse mesmo problema, sem entender onde estavam errando.

O novo JSX Transform do React 17

No React 17 em diante não vamos mais precisar importar o React para apenas usar JSX. A fim de simplificar as coisas, o novo transformador de JSX irá injetar automaticamente as funções necessárias.

Então o seguinte código:

function MeuComponente(){
	return <div>Olá Web Developers!</div>;
}

Vai se tranformar em:

import {jsx as _jsx} from 'react/jsx-runtime';

function App() {
  return _jsx('div', { children: 'Olá Web Developers!' });
}

E o melhor de tudo: você não precisa mudar nada no seu código, pois isso é compatível com os códigos já existentes!

Se acaso você quiser atualizar seu código, a própria equipe de desenvolvimento do React criou um script que remove automaticamente as importações não usadas do React. Basta executar npx react-codemod update-react-imports.

Mas existe alguma vantagem no novo JSX Transform? (React 17 – Conheça)

Sim! Além de não precisarmos mais importar o React quando não formos usá-lo, também teremos uma melhora no tamanho dos arquivos.

// antigo
function MeuComponente(){
	return React.createElement('div', null, 'Olá Web Developers!');
}

// novo
function App() {
  return _jsx('div', { children: 'Olá Web Developers!' });
}

Além disso, também foi dito que o formato anterior não possibilitava certas melhorias e simplificações, que agora com o novo formato serão possíveis.

De acordo com a equipe de desenvolvimento do React, esse novo formato também vai permitir futuras melhorias e até a redução do número de conceitos que as pessoas precisam saber para aprender React.

Leia nosso artigo “Conheça a nova rede Threads