<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: William Quayson</title>
    <description>The latest articles on DEV Community by William Quayson (@quayson).</description>
    <link>https://dev.to/quayson</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F261705%2F3d1bb6e7-e277-4c53-ae44-c477dfa87410.jpg</url>
      <title>DEV Community: William Quayson</title>
      <link>https://dev.to/quayson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/quayson"/>
    <language>en</language>
    <item>
      <title>Você sabe como funciona a lógica de Loading nas aplicações?</title>
      <dc:creator>William Quayson</dc:creator>
      <pubDate>Sun, 15 Nov 2020 00:38:44 +0000</pubDate>
      <link>https://dev.to/quayson/voce-sabe-como-funciona-a-logica-de-loading-nas-aplicacoes-ahj</link>
      <guid>https://dev.to/quayson/voce-sabe-como-funciona-a-logica-de-loading-nas-aplicacoes-ahj</guid>
      <description>&lt;p&gt;Em JavaScript, as funções assíncronas são utilizadas para a realização de requisições HTTP (GET, POST, PUT, DELETE...) para se consumir dados, e, geralmente, essas funções demoram um certo tempo para ser executadas, por isso são assíncronas, para que a aplicação não pare por completo quando se precisar fazer uma requisição ao servidor.&lt;/p&gt;

&lt;p&gt;Com isso em mente, por uma questão de usabilidade, é importante dar um feedback visual ao usuário quando uma requisição for iniciada e finalizada - o Loading. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbked2kyupon5jmkwx4k6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fbked2kyupon5jmkwx4k6.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nós podemos controlar quando uma animação de loading vai ser mostrada ou não. Utilizando como exemplo o React(e, automaticamente, o React Native) podemos utilizar um estado que eu chamo de isLoading que possui um valor inicial false. Em conjunto com esse estado, utilizo alguma animação para ser mostrada em tela, servindo como feedback visual para o usuário. Por exemplo, no React eu posso usar a coleção React Spinners (&lt;a href="https://www.davidhu.io/react-spinners/" rel="noopener noreferrer"&gt;https://www.davidhu.io/react-spinners/&lt;/a&gt;) e o React Native possui um componente nativo chamado Activity Indicator (&lt;a href="https://reactnative.dev/docs/activityindicator" rel="noopener noreferrer"&gt;https://reactnative.dev/docs/activityindicator&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Sempre que eu fizer uma função assíncrona em meu componente, dentro dela mudo o valor desse estado para true, e controlo o tempo da requisição via try/catch. Alterarei o estado de volta para false no try(após o await, que é quando a requisição é completada) e no início do catch, para mostrar algum possível erro.&lt;/p&gt;

&lt;p&gt;Agora, para se mostrar a animação em tela enquanto todo esse processo é realizado, eu posso abrir chaves dentro do meu JSX e utilizar o operador lógico &amp;amp;&amp;amp; ou um operador ternário.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgtcilvklkczfs940tls1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgtcilvklkczfs940tls1.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Isso é tudo pessoal. Disseminem o conhecimento! Até a próxima! &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>usability</category>
      <category>react</category>
      <category>reactnative</category>
    </item>
  </channel>
</rss>
