H.O.C Metódo avançado de reutilização de componentes em React JS
Nos tempos mordernos, O React JS, assim como outros frameworks devirados do JavaScript, recebem alterações e de tempos em tempos grandes atualizações, sempre propondo novidades e trazendo formas novas de fazer aquilo que já é bem antigo da biblioteca.
Nesse víes, ao citar react uma das primeiras palavras que nos vem a mente é a "componentização", que é uma das palavaras pela qual o react é conhecido e lembrado, nesse artigo falaremos sobre o termo 'HOC (Hght-rder Component) que é uma das formas de trabalhar com a reutilização dos componentes de forma mais complexa, através desse método somos capazes de implementar lógicas e funcionalidades adicionais porém reutilizando componentes já existentes.
Motivos para utilizar esse meótodo:
- Fácil de utilizar
- Previne o programador de repetir a mesma lógica em componentes diferentes
- Torna o código mais legível (oque é uma mão na roda ao desenvolver em conjunto)
Exemplo de uso do HOC:
const childrenComponent = higherOrderComponent(InitialComponent)
Creating React Application:
Abaixo, um exemplo completo de como criar uma aplicação usando React JS - 2024
No terminal da sua IDE favorita ( no exemplo VS CODE ) digite o seguinte comando.
npx create-react-app project-name
cd project-name
Estruturar em pastas principais com nomes objetivos garante uma organiozação do projeto eficaz, e facilita futuras mudanças e implementações.
Exemplo de pastas:
[src]
App.css
App.js
index.css
index.js
logo.svg
Name.js
reportWebVital.js
setupTests.js
.gitignore
package-lock.json
package.json
README.md
Exemplo de aplicação prática do pattern Higher-Order Components (HOCs)
Sugestão de estudos:
[https](www.geeksforgeeks.org/courses/react-js-beginner-to-advance?utm_campaign=662_reactjs_higherorder_components&utm_medium=gfgcontent_icp&utm_source=geeksforgeeks)://
Seguindo o exemplo da estrutura de código mostrada anteriormente, podemos aplicar o HOC no arquivo Name.js:
`import React from 'react'
const componenteEncapsulado = (ComponenteOriginal) => {
class novoComponente extends React.Component {
// Sua lógica aqui
render() {
// Chame a props no componente original
return
}
}
// Retornar o novo componente
return novoComponente
}
export default componenteEncapsulado;
``import React from "react";
import "./App.css"
import componenteEncapsulado from './Name'
class App extends React.Component {
render() {
// Chama a props do componente original
return
{this.props.name}
}
}
// Passando o componente original
export default componenteEncapsulado(App);``
Obrigado por ler até aqui!
Os exemplos de código foram feitos com class-based-components mas voce pode replicar de todas as formas possíveis, bons estudos.