Aplicando pequenas melhorias em seus componentes React
3887 단어 reactjavascript
Resumindo... 미국 메모, useMemo, useCallback semper que der... Isso é tudo pessoal... #brinks
Evite는 "crianças"로 다시 렌더링됩니다.
Caso vc tenha um component que precisa fazer um re-render por algum motivo... lembre-se que todos os components filhos
também irão sofrer esse re-render. Para evitarmos esse processo "pesadaum"podemos usar o memo() do react nos filhos
import React, { memo } from 'react'
const Luke = props => (
...
)
export default memo(Luke)
// --------------------------
import Luke from '../Luke'
const Vader = ({ children, isLukeJedi }) => {
return (
<>
<Luke isJedi={isLukeJedi} />
{children}
</>
)
}
Logo... luke sofrerá re-render se a propriedade isJedi mudar de valor
Evite processos desnecessários
Caso você possua algum objeto, valor, array ou qualquer coisa fruto de um filter ou algo mais complexo
você não precisa ficar "recalculando"isso toda vez. 예:
function foo({ bar, num, list }) {
const filteredList = list.filter(item => item.bar === bar)
...
}
Se o list ou bar mudarem, faz sentido a gente fazer o filter novamente. Porem se o num mudar ele também irá fazer isso.
Logo se quisermos melhorar o codigo para ele filtrar somente quando o list/bar mudarem e usar um "memo"(olha a dica),
nos podemos fazer isso:
function foo({ bar, num, list }) {
const filteredList = useMemo(() => list.filter(item => item.bar === bar), [list, bar])
// ...
}
chamadas das suas funções로 최적화
Se vc tem alguma função que usa alguma prop e ela tem um custo alto de processamento, você pode fazer um memoize do resultado da mesma
베이스아도 엠 수아스 디펜시아스
// essa funcao sera chamada executando sempre a parte pesada
const foo = () => {
// ...
return prop1 * prop2
}
// essa funcao ira pegar o resultado que está memorizado da ultima chamada
// so ira executar novamente o processo pesado quando uma das dependencias mudar
const memoFoo = useCallback(() => {`
// ...
return prop1 * prop2
}, [prop1, prop2])
Caso vc tenha funções que precisam ser passadas para props de components filhos é uma boa usar esse useCallback, para que o memo()
펑시오네 라 꼬르타망떼
Caso a sua funcao precision de um parametro e nao mexa com props... pense se não vale a pena colocá-la do lado de fora do seu component,
pois toda vez que sofrer re-render a sua variável será reatribuída com a função
Não quebre a cabeça com o DOM
Em certas circunstâncias, nos precisamos acessar o DOM e muitas vezes o fazemos com o nosso querido document.querySelector().
Porém... podemos fazer de uma forma mais prática usando o useRef que cria uma reference para algo e esse algo pode ser acessado com .current
const Foo = () => {
const ref = useRef()
// ... aqui poderiamos verificar button através de ref.current
// porem lembre-se que no primeiro render ele está como undefined..
// afinal precisamos que ele seja renderizado podermos acessá-lo
return (
<Button ref={ref}>
botao
</Button>
)
}
Outras coisinhas a mais
CASo você ainda tenha dúvidas sobre se o seu component está "pesadaum"... use o react devtools... é um plugin Excelente para o seu 브라우저.
추가 설치 개발자 도구(일반 F12) 프로필러 -> 설정 사용 "구성 요소가 렌더링될 때 업데이트 강조 표시".
법적 책임을 져야 합니다.
Reference
이 문제에 관하여(Aplicando pequenas melhorias em seus componentes React), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/matvaleriano/aplicando-pequenas-melhorias-em-seus-componentes-react-1io1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)