<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Javascript on dev notes</title>
    <link>https://juhanakristianblog.netlify.app/tags/javascript/</link>
    <description>Recent content in Javascript on dev notes</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 17 Jul 2021 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://juhanakristianblog.netlify.app/tags/javascript/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to use a cache busting filename with webpack</title>
      <link>https://juhanakristianblog.netlify.app/posts/how-to-use-a-cache-busting-filename-with-webpack/</link>
      <pubDate>Sat, 17 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://juhanakristianblog.netlify.app/posts/how-to-use-a-cache-busting-filename-with-webpack/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re using a custom webpack config, instead of a template or &lt;a href=&#34;https://create-react-app.dev/&#34;&gt;Create React App&lt;/a&gt;, you&amp;rsquo;ll want to make sure the filename has a cache busting suffix. Cache busting means making sure the users browser loads the newest version of our app, if it has been updated, instead of using a cached version.&lt;/p&gt;&#xA;&lt;p&gt;A naive webpack setup would just use a single output file with a fixed name.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;path&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;require&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;path&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;HtmlWebpackPlugin&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;require&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;html-webpack-plugin&amp;#39;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;module&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;exports&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;entry&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;./src/index.js&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;plugins&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;HtmlWebpackPlugin&lt;/span&gt;(),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;output&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;filename&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;bundle.js&amp;#39;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;path&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;resolve&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;__dirname&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dist&amp;#39;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here, we are using &lt;a href=&#34;https://webpack.js.org/plugins/html-webpack-plugin/&#34;&gt;HtmlWebpackPlugin&lt;/a&gt; to manage the creation of our &lt;strong&gt;index.html&lt;/strong&gt; file and it will handle inserting a &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag into the &lt;strong&gt;index.html&lt;/strong&gt; with our bundle filename. For now we are bundling all of our JavaScript into single file called &lt;strong&gt;bundle.js&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Convert an array to a map in JavaScript</title>
      <link>https://juhanakristianblog.netlify.app/posts/convert-an-array-to-a-map-in-javascript/</link>
      <pubDate>Tue, 06 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://juhanakristianblog.netlify.app/posts/convert-an-array-to-a-map-in-javascript/</guid>
      <description>&lt;p&gt;Sometimes it&amp;rsquo;s useful to convert a array to a map for convenience or performance reasons. But how can we achieve that so that the resulting code will be easy to understand?&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m using the term &lt;strong&gt;map&lt;/strong&gt; here to mean a data structure where a value can be accessed using an unique key. In JavaScript, objects can be used as maps but there also exists a special &lt;strong&gt;Map&lt;/strong&gt; &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map&#34;&gt;type&lt;/a&gt; which has some advantages and disandvantages when compared to using objects. We won&amp;rsquo;t be covering &lt;strong&gt;Map&lt;/strong&gt; in this article.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup Spectron and Testing Library to effectively test your Electron.js application</title>
      <link>https://juhanakristianblog.netlify.app/posts/how-test-electron-apps-with-spectron-and-testing-library/</link>
      <pubDate>Sun, 14 Mar 2021 09:33:01 +0000</pubDate>
      <guid>https://juhanakristianblog.netlify.app/posts/how-test-electron-apps-with-spectron-and-testing-library/</guid>
      <description>&lt;p&gt;In this article, we will setup &lt;a href=&#34;https://www.electronjs.org/spectron&#34;&gt;Spectron&lt;/a&gt; and use &lt;a href=&#34;https://testing-library.com/&#34;&gt;Testing Library&lt;/a&gt; with &lt;a href=&#34;https://webdriver.io&#34;&gt;WebdriverIO&lt;/a&gt; to test an &lt;a href=&#34;https://electronjs.org&#34;&gt;Electron.js&lt;/a&gt; application.&lt;/p&gt;&#xA;&lt;p&gt;Spectron is an open source framework for writing integration tests for Electron apps. It starts your application from the binary, so you can test it as a user would use it. Spectron is based on &lt;a href=&#34;https://sites.google.com/a/chromium.org/chromedriver&#34;&gt;ChromeDriver&lt;/a&gt; and &lt;a href=&#34;http://webdriver.io/&#34;&gt;WebdriverIO&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Testing Library WebdriverIO is a library you can use to test web applications through &lt;a href=&#34;https://webdriver.io&#34;&gt;WebdriverIO&lt;/a&gt;. It&amp;rsquo;s part of the &lt;a href=&#34;https://testing-library.com&#34;&gt;Testing Library&lt;/a&gt; family of libraries.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How using Testing Library will help you improve the accessibility of your application</title>
      <link>https://juhanakristianblog.netlify.app/posts/how-testing-library-will-improve-accessibility/</link>
      <pubDate>Tue, 23 Feb 2021 09:33:01 +0000</pubDate>
      <guid>https://juhanakristianblog.netlify.app/posts/how-testing-library-will-improve-accessibility/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://testing-library.com&#34;&gt;Testing Library&lt;/a&gt; is a JavaScript testing framework that focuses on testing the way the application is used. Testing Library will also help you avoid testing implementation details and make your tests more maintainable. Testing the way the application is used will give us the confidence that the application is working as intended.&lt;/p&gt;&#xA;&lt;p&gt;What&amp;rsquo;s also nice about testing-library, is that its recommended queries are designed to work well on accessible elements. This means using Testing Library will also reveal accessibility problems in your application.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Making API calls in React useEffect</title>
      <link>https://juhanakristianblog.netlify.app/posts/making-api-calls-with-react-useeffect/</link>
      <pubDate>Sat, 16 May 2020 09:33:01 +0000</pubDate>
      <guid>https://juhanakristianblog.netlify.app/posts/making-api-calls-with-react-useeffect/</guid>
      <description>&lt;p&gt;&lt;code&gt;useEffect&lt;/code&gt; is a &lt;a href=&#34;https://reactjs.org/docs/hooks-effect.html&#34;&gt;hook&lt;/a&gt; added in React 16.8. It allows you to perform &lt;a href=&#34;https://en.wikipedia.org/wiki/Side_effect_(computer_science)&#34;&gt;side effects&lt;/a&gt; in function components. This means you can update things outside of React based on your &lt;code&gt;props&lt;/code&gt;and &lt;code&gt;state&lt;/code&gt;. Fetching data when the component state changes, changing the page &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; or connecting to a WebSocket server are all examples of side effects that can be done with &lt;code&gt;useEffect&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;As an example, we are going to build a component which fetches data from &lt;a href=&#34;https://alexwohlbruck.github.io/cat-facts/&#34;&gt;Cat Facts API&lt;/a&gt; and displays the received facts as a list. Finally we&amp;rsquo;ll add buttons to select the animal we want facts about.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to loop over a JavaScript object</title>
      <link>https://juhanakristianblog.netlify.app/posts/how-to-loop-over-a-javascript-object/</link>
      <pubDate>Thu, 30 Apr 2020 09:33:01 +0000</pubDate>
      <guid>https://juhanakristianblog.netlify.app/posts/how-to-loop-over-a-javascript-object/</guid>
      <description>&lt;p&gt;There&amp;rsquo;s a few ways to loop over a object in JavaScript. Let&amp;rsquo;s look at a couple of them.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s say we have a object like this&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;animals&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;cat&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;meow&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;dog&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;woof&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;duck&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;quack&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;pig&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;oink&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;turkey&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;gobble&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;One way to loop over a object is to use the &lt;code&gt;Object.keys()&lt;/code&gt; function to first retrieve the keys in a object and then loop over the returned array.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;keys&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; Object.&lt;span style=&#34;color:#a6e22e&#34;&gt;keys&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;animals&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;let&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;keys&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;length&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;animal&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;keys&lt;/span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;i&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;sound&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;animals&lt;/span&gt;[&lt;span style=&#34;color:#a6e22e&#34;&gt;animal&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;`A &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;animal&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt; says &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;sound&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;!`&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// A cat says meow!&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// A dog says woof!&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// A duck says quack!&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// A pig says oink!&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// A turkey says gobble!&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You could also use Array function &lt;code&gt;forEach&lt;/code&gt; for looping the array but in ES6 the &lt;code&gt;for..of&lt;/code&gt; syntax was introduced for looping iterators (including arrays).&lt;/p&gt;</description>
    </item>
    <item>
      <title>The very basics of React Hooks</title>
      <link>https://juhanakristianblog.netlify.app/posts/react-hooks-basics/</link>
      <pubDate>Mon, 27 Apr 2020 09:33:01 +0000</pubDate>
      <guid>https://juhanakristianblog.netlify.app/posts/react-hooks-basics/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://reactjs.org/docs/hooks-intro.html&#34;&gt;Hooks&lt;/a&gt; are an React API that were introduced in &lt;a href=&#34;https://reactjs.org/blog/2019/02/06/react-v16.8.0.html&#34;&gt;React 16.8&lt;/a&gt; a little more than a year ago (february 2019).&#xA;They let you use &lt;a href=&#34;https://reactjs.org/docs/state-and-lifecycle.html&#34;&gt;state&lt;/a&gt; in your React &lt;a href=&#34;https://reactjs.org/docs/components-and-props.html&#34;&gt;components&lt;/a&gt; without writing classes.&lt;/p&gt;&#xA;&lt;p&gt;In this post I&amp;rsquo;ll talk about the &lt;code&gt;useState&lt;/code&gt; hook and after reading it you&amp;rsquo;ll have a basic idea how to use it to add state to your functional components.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s start with a simple functional component.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-jsx&#34; data-lang=&#34;jsx&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;React&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;react&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Cat&lt;/span&gt;() {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; (&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;🐱&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;span&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  );&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here we are simply rendering a cat emoji inside a humble span element.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
