성능 com 메모 e useMemo
14968 단어 usememoreactjavascriptusecallback
Antes de atualizar o DOM, o React Primeiro Renderiza o componente. Feito isso, ele compara o resultado da renderização com a anterior. Se os resultadores forem diferentes, ele o atualiza.
반응 메모
É ai que entra a vantagem de utilização do React.memo() . Quando utilizamos o memo
, o React memoriza o resultado do componente. Antes de o React renderizar o componente novamente, ele valida se os os props (primitivos) são os mesmos, em caso positivo ele pula a renderização.
실용화 사례React.memo()를 실용화할 수 있습니다.
import React, { memo, useState } from "react";
import ReactDOM from "react-dom";
const ComMemo = memo(props => {
console.log("Estou renderizando com memo!");
return <h3>{props.message}</h3>;
});
const SemMemo = props => {
console.log("Estou renderizando sem memo!");
return <em>{props.message}</em>;
};
const MyApp = () => {
const [count, setCount] = useState(0);
return (
<div>
<h1>React Memo</h1>
<p>Contador: {count}</p>
<button onClick={() => setCount(count + 1)}>Incrementar</button>
<ComMemo message="Este componente só renderiza uma vez." />
<SemMemo message="Este componente vai renderizar a cada mudança de estado." />
<p>Dá uma olhada no console!</p>
</div>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<MyApp />, rootElement);
코드 및 상자가 없는 예제 기능을 제공하는 음성 코드, aqui .
사용메모
O useMemo é um hook que utiliza uma técnica chamada memoization. Esse hook recebe 2 paraâmetros: a função que deseja memoizar e um array de variáveis que, quando alteradas, atualizam a função.
Veja abaixo um exemplo do useMemo em ação:
import React, { useState, useMemo } from "react";
import ReactDOM from "react-dom";
const Error = (props) => {
const { active } = props;
const message = "Mínimo de 8 caracteres";
console.log("Componente de erro renderizando");
return active && message;
};
const MyApp = () => {
const [password, setPassword] = useState("");
const [showErrors, setShowErrors] = useState(false);
const handlePasswordChange = (event) => {
const { value } = event.target;
setShowErrors(value.length < 8);
setPassword(value);
};
const memoizedErrors = useMemo(() => {
return <Error active={showErrors} />;
}, [showErrors]);
return (
<form>
<h1>Cadastrar uma senha</h1>
<input
type="password"
placeholder="Password"
value={password}
onChange={handlePasswordChange}
/>
<button type="submit">Salvar</button>
<p>{memoizedErrors}</p>
<p>Dá uma olhada no log!</p>
</form>
);
};
ReactDOM.render(<MyApp />, document.getElementById("root"));
Você pode observar que neste example o componente de erro só precisa ser renderizado novamente quando a mensagem for mostrada ou escondida.
코드 및 상자가 없는 예제 기능을 제공하는 음성 코드, aqui .
React.memo() 대 useMemo
Duas funcionalidades tem o mesmo comportamento e a diferença é uma questão de conceito.
React.memo() 와 higher-order component 구성 요소를 포함하여 렌더링할 때 변경 사항을 변경해야 합니다. Já o useMemo é um react hook que envolve funções para garantir que elas sejam renderizadas apenas quando o array de dependsências for alterado.
Enfim... Existem casos em que você pode escolher utilizar um dos recursos acima. 가장 중요한 것은 GAP의 성능과 재귀에 대한 정확한 리졸버를 관찰하는 것입니다. Para isso, é importante colocar na prática.
Este post não seria possível sem o trabalho de pesquisa e talkão do time do time do capítulo de frontend do LuizaLabs.
Obrigado pela leitura! Espero que possa ter ajudado. 🚀
아테 마이스.
Reference
이 문제에 관하여(성능 com 메모 e useMemo), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/stanley/performance-com-memo-usememo-e-usecallback-40ga
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import React, { memo, useState } from "react";
import ReactDOM from "react-dom";
const ComMemo = memo(props => {
console.log("Estou renderizando com memo!");
return <h3>{props.message}</h3>;
});
const SemMemo = props => {
console.log("Estou renderizando sem memo!");
return <em>{props.message}</em>;
};
const MyApp = () => {
const [count, setCount] = useState(0);
return (
<div>
<h1>React Memo</h1>
<p>Contador: {count}</p>
<button onClick={() => setCount(count + 1)}>Incrementar</button>
<ComMemo message="Este componente só renderiza uma vez." />
<SemMemo message="Este componente vai renderizar a cada mudança de estado." />
<p>Dá uma olhada no console!</p>
</div>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<MyApp />, rootElement);
O useMemo é um hook que utiliza uma técnica chamada memoization. Esse hook recebe 2 paraâmetros: a função que deseja memoizar e um array de variáveis que, quando alteradas, atualizam a função.
Veja abaixo um exemplo do useMemo em ação:
import React, { useState, useMemo } from "react";
import ReactDOM from "react-dom";
const Error = (props) => {
const { active } = props;
const message = "Mínimo de 8 caracteres";
console.log("Componente de erro renderizando");
return active && message;
};
const MyApp = () => {
const [password, setPassword] = useState("");
const [showErrors, setShowErrors] = useState(false);
const handlePasswordChange = (event) => {
const { value } = event.target;
setShowErrors(value.length < 8);
setPassword(value);
};
const memoizedErrors = useMemo(() => {
return <Error active={showErrors} />;
}, [showErrors]);
return (
<form>
<h1>Cadastrar uma senha</h1>
<input
type="password"
placeholder="Password"
value={password}
onChange={handlePasswordChange}
/>
<button type="submit">Salvar</button>
<p>{memoizedErrors}</p>
<p>Dá uma olhada no log!</p>
</form>
);
};
ReactDOM.render(<MyApp />, document.getElementById("root"));
Você pode observar que neste example o componente de erro só precisa ser renderizado novamente quando a mensagem for mostrada ou escondida.
코드 및 상자가 없는 예제 기능을 제공하는 음성 코드, aqui .
React.memo() 대 useMemo
Duas funcionalidades tem o mesmo comportamento e a diferença é uma questão de conceito.
React.memo() 와 higher-order component 구성 요소를 포함하여 렌더링할 때 변경 사항을 변경해야 합니다. Já o useMemo é um react hook que envolve funções para garantir que elas sejam renderizadas apenas quando o array de dependsências for alterado.
Enfim... Existem casos em que você pode escolher utilizar um dos recursos acima. 가장 중요한 것은 GAP의 성능과 재귀에 대한 정확한 리졸버를 관찰하는 것입니다. Para isso, é importante colocar na prática.
Este post não seria possível sem o trabalho de pesquisa e talkão do time do time do capítulo de frontend do LuizaLabs.
Obrigado pela leitura! Espero que possa ter ajudado. 🚀
아테 마이스.
Reference
이 문제에 관하여(성능 com 메모 e useMemo), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/stanley/performance-com-memo-usememo-e-usecallback-40ga
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(성능 com 메모 e useMemo), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/stanley/performance-com-memo-usememo-e-usecallback-40ga텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)