Eu estava fazendo uma revisão de código para um colega meu e me deparei com um código que imediatamente enviou uma bandeira vermelha em minha mente.
<Checkbox label={translationContext.getTranslation(checkboxLabel)}/>
... inside functional component
const getNextSection = () => {
valid = context.actions.validateCurrentSection()
if(!valid){
return context.actions.showErrors()
} else {
return context.actions.getNextSection()
}
}
Isso também introduziu alguns outros problemas. E se precisássemos mover essas funções para um contexto diferente no futuro? Precisaríamos rastrear toda vez que essa função fosse acessada via context.actions.functionIWantToMovee alterar o contexto em que a função está sendo chamada, o que significa que eu teria que dar a esse componente acesso total a um SEGUNDO contexto. Tudo para que pudesse acessar um dado ou chamar uma única função.
Fiz uma rápida git culpa para ver quem poderia ter implementado um padrão tão irresponsável e, claro, fui eu. Claramente esta é uma maneira horrível de fazer as coisas. Precisávamos de uma solução melhor.
Uma das coisas em que o React é realmente bom é a separação de interesses. Nenhum recurso incorpora isso mais do que ganchos. Voltei para aquela linha que originalmente causou as bandeiras vermelhas, expandi o código para fornecer mais contexto:
import React, {useContext} from "react"
import {TranslationContext} from "../contexts/translation-context.tsx"
const CheckboxGroup = ({options}) => (
translationContext = useContext(TranslationContext)
<div>
{options.map(option => (
<Checkbox label={translationContext.getTranslation(option.text) />
))
}
</div>
)
import React from "react"
import {useTranslate} from "../translate"
const TranslatedCheckbox = ({label}) => {
const translatedValue = useTranslate(label)
return <Checkbox label={translatedValue} />
}
const CheckboxGroup = ({options}) => (
<div>
{options.map(
option => <TranslatedCheckbox label={option.label}/>
)
}
</div>
)
Eu só queria observar que os trechos de código apresentados aqui são exemplos artificiais usados para fazer um ponto, editados para mostrar apenas as partes relevantes. Estou ciente de que eles não serão executados como estão. Esperemos que o ponto ainda se entenda.
Introdução O AVC é uma emergência médica que pode atingir qualquer pessoa a qualquer momento. Ocorre quando o fluxo sanguíneo para uma parte do cérebro é interrompido, levando a uma perda repentina da função cerebral.
O teste é uma parte essencial do desenvolvimento de software. Ele garante que o código seja confiável, funcione conforme o esperado e reduza a probabilidade de erros.
No mundo acelerado e competitivo de hoje, a carreira desempenha um papel significativo no crescimento pessoal, na estabilidade financeira e na satisfação geral com a vida. No entanto, muitos indivíduos encontram-se presos em um ciclo implacável de estagnação e insatisfação, definhando gradualmente em suas vidas profissionais.
No mundo interconectado de hoje, a ameaça de ataques cibernéticos é mais prevalente do que nunca. Criminosos cibernéticos e agentes de estado-nação estão constantemente buscando explorar vulnerabilidades e roubar dados valiosos, representando um risco significativo para organizações de todos os tamanhos.
Isso me atinge De repente, como tantas vezes acontece É o meio do caminho tudo de novo <Não, não aquele no Pacífico, seu marrom, aquele no carnaval> Todas as manchetes em voz alta…..
(Aviso - isso é sátira, com a intenção de ser alegremente subversivo - definitivamente não é para crianças) Você viu sua mãe e seu pai se esconderem na cozinha e fumarem aqueles cigarros fedorentos. Eles dizem a você.