Um dos problemas mais comuns que você precisa resolver em uma aplicação React é a busca de dados externos. Em geral, esse é um dos primeiros problemas que você aprende a resolver, mas a maioria das implementações comete um erro simples, atualiza o estado de um componente desmontado .
Vamos começar com um exemplo bem simples, um componente do Blog que busca os dados relacionados aos posts, mostra uma mensagem de carregamento quando a busca está em andamento, mostra um erro em caso de erros, e em outro caso, mostra a lista de posto.
const Blog = () => {
const [posts, setPosts] = useState([]);
const [status, setStatus] = useState('idle');
const [error, setStatus] = useState(null);
useEffect(() => {
const fetchData = async () => {
setStatus('loading');
try{
setStatus('loading');
const posts = await getAllPosts();
setPosts(posts);
setStatus('finished');
} catch(e) {
setStatus('error');
setError(e);
}
}
}, []);
if(status == 'error') return <p>Error while loading data</p>;
if(status == 'loading') return <p>Loading...<p>;
return <PostGrid posts={posts} />
};
A getAllPostsfunção é uma função assíncrona que é aguardada, essa função pode demorar muitos segundos para voltar e quando retorna, o código tenta chamar a setPostsfunção, mas o que aconteceu quando o componente é desmontado antes desse momento? Você recebe um aviso porque não pode definir o estado de um componente desmontado.
const posts = await getAllPosts();
setPosts(posts); # Warning: Can't perform a React state update on an unmounted component.
setStatus('finished');
A chave é definir o estado somente se o componente estiver montado, neste caso, você precisa ter certeza de que o componente está montado após a getAllPostschamada. Para isso, vamos usar um gancho que abstrai o mecanismo para verificar se o componente atual está montado.
const useIsMounted = () => {
const isMounted = React.useRef(false); // (1)
React.useEffect(() => {
isMounted.current = true; // (2)
return () => isMounted.current = false; // (3)
}, []); // (3)
return isMounted.current;
}
Agora, você pode usá-lo com seu componente original
const Blog = () => {
const [posts, setPosts] = useState([]);
const [status, setStatus] = useState('idle');
const [error, setStatus] = useState(null);
const isMounted = useIsMounted();
useEffect(() => {
const fetchData = async () => {
setStatus('loading');
try{
const posts = await getAllPosts();
if(isMounted) {
setPosts(posts); // 1
setStatus('finished');
}
} catch(e) {
if(isMounted) {
setStatus('error'); // 2
setError(e);
}
}
}
}, []);
if(status == 'error') return <p>Error while loading data</p>;
if(status == 'finished') return <PostList posts={posts} />
return <p>Loading...<p>;
};
Tentar atualizar o estado de um componente desmontado é um problema muito comum em apps reacts, esse problema geralmente é apresentado quando você busca alguns dados externos, mas o mesmo problema é apresentado quando você usa algum evento assíncrono que aciona algumas alterações no estado após sua conclusão.
Isso é tudo por este post, espero que o conteúdo tenha sido do seu agrado, até o próximo post.
Mais conteúdo em PlainEnglish.io . Assine nosso boletim informativo semanal gratuito . Siga-nos no Twitter e LinkedIn . Junte-se à nossa comunidade Discord .
Quantas vezes você jogou fora uma garrafa de plástico, uma jarra de vidro, uma lata de alumínio ou uma embalagem de energia verde sem pensar duas vezes? Quantas vezes você desejou receber algo em troca de reciclá-los? Se você for como a maioria das pessoas, a resposta provavelmente é muitas vezes. A reciclagem é muitas vezes vista como um aborrecimento, uma tarefa árdua ou um dever que não traz nenhum benefício imediato ou tangível.
Em 2022, com o lançamento do GPT-3, a habilidade de escrita parece se tornar menos importante. Com a IA, pessoas com redação ruim também podem gerar funcionários de qualidade.
Qualquer mente racional sabe que os círculos políticos e midiáticos são dominados pela esquerda, até mesmo pela extrema esquerda, um estado de coisas que cria um desequilíbrio no discurso político. No campo da religião, esse desequilíbrio é bem visível: jornais e redes de esquerda não se apressam em defender a fé cristã.
Quando você cresce, tende a ouvir que o mundo é do jeito que é e sua vida é apenas viver sua vida dentro do mundo, nunca arriscando sua vida, apenas siga um caminho definido e morra no final, e tente não bater demais nas paredes. Mas essa é uma vida muito limitada.
Ontem, fechamos a porta do Festival Eurovisão da Canção deste ano com uma brilhante e caótica grand finale, onde a cantora sueca Loreen levou para casa o troféu, tornando-se a primeira mulher a vencer duas vezes e trazendo a coroa de volta para a Suécia 50 anos depois que o ABBA venceu a competição com “Waterloo”. Eles se tornaram um dos maiores artistas do cânone da música pop.
No atual cenário de negócios em rápida evolução, o conceito de trabalho híbrido e remoto ganhou um impulso sem precedentes. À medida que as empresas continuam a se adaptar às mudanças nas necessidades e expectativas de seus funcionários, especialistas de várias áreas se reuniram para discutir os benefícios, os desafios e o futuro dessa forma transformadora de trabalhar.