<?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: Austin Chen</title>
    <description>The latest articles on DEV Community by Austin Chen (@chenyibo406).</description>
    <link>https://dev.to/chenyibo406</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%2F979383%2F319016b2-3607-4ec4-9f67-3d347ef1f9bc.jpeg</url>
      <title>DEV Community: Austin Chen</title>
      <link>https://dev.to/chenyibo406</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chenyibo406"/>
    <language>en</language>
    <item>
      <title>Create a color generator React App with Clipboard-Copy function function.</title>
      <dc:creator>Austin Chen</dc:creator>
      <pubDate>Mon, 09 Jan 2023 14:15:35 +0000</pubDate>
      <link>https://dev.to/chenyibo406/create-a-color-generator-react-app-with-clipboard-copy-function-function-3c57</link>
      <guid>https://dev.to/chenyibo406/create-a-color-generator-react-app-with-clipboard-copy-function-function-3c57</guid>
      <description>&lt;p&gt;Hi, My name is Yibo Chen and I am a self-taught developer.In this article, I build a Random Color Generate with React.js using values.js randomcolor API and clipboard-copy function.&lt;/p&gt;

&lt;p&gt;You can check my whole project on my netify page: &lt;a href="https://react-app-color-generator-ac.netlify.app/" rel="noopener noreferrer"&gt;https://react-app-color-generator-ac.netlify.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me introduce you my whole project with code demostraction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install NPM Package:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;npx create-react-app color-generator&lt;br&gt;
npm install values.js --save&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;You can check out the whole API introduction on &lt;a href="https://github.com/noeldelgado/values.js" rel="noopener noreferrer"&gt;https://github.com/noeldelgado/values.js&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Import the Value.js in our App component:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;import Values from "values.js";&lt;br&gt;
Build the h3 head tile of color generator.&lt;br&gt;
With the form-input element and we can submit the input color to our page, and set the className with error, if there is error and the input column will show up the error with css styles.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffedjhb7kuhx811opnrxd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffedjhb7kuhx811opnrxd.png" alt="Image description" width="800" height="703"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feep7xk6gv9dhqs6jzc03.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feep7xk6gv9dhqs6jzc03.png" alt="Image description" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set the useState Hook default as false and if user input the error message, it would set the error state as true.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuo4b1jo051p8rifqjj9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuo4b1jo051p8rifqjj9.png" alt="Image description" width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, we would use the try and catch method to make the whole function run well. With the &lt;strong&gt;handleSubmit function&lt;/strong&gt; of form-input element onsubmit Event Attribute, we can make this happening.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uhsotcrayl0sk7rxhrl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uhsotcrayl0sk7rxhrl.png" alt="Image description" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set the list as the default value of #f15025 hex color of showing 10 colors:&lt;br&gt;
&lt;em&gt;const [list, setList] = useState(new Values("#f15025").all(10));&lt;/em&gt;&lt;br&gt;
With the list variable, let's map out our data to the SingleColor component and show on the react page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwqk3vvy7f3sl12sh968.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwqk3vvy7f3sl12sh968.png" alt="Image description" width="800" height="727"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we check out our data with console.log method, we can see the data pass out as which number we set as Value.all(number), and based on those data we can build our project with values.js passing data, and also we can pass the color.hex value to the SingleColor component.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk5z2v81fc8ehbplkos4m.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk5z2v81fc8ehbplkos4m.PNG" alt="Image description" width="577" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpp2dxcf12gsps3sc23h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpp2dxcf12gsps3sc23h.png" alt="Image description" width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set the background color based on the rgb data, we are passing in SingleColor component.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58y2vt39t0z7loqn7b4g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58y2vt39t0z7loqn7b4g.png" alt="Image description" width="800" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, let's build the &lt;em&gt;copied to clipboard&lt;/em&gt; function with useState hook and useEffect hook.&lt;br&gt;
Set the default useState hook of alert as false, and with p element with context of 'copied to clipboard'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0vknk76hxflksnski1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0vknk76hxflksnski1v.png" alt="Image description" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sa3zqc24fwhsow0m0vd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sa3zqc24fwhsow0m0vd.png" alt="Image description" width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With onClick method and navigator.clipboard.writeText(hexValue) function, we can make the copy and paste function on page, and the useEffect hook with setTimeout and clearTimeout method to make the copy and paste show up in three minutes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmtazenardkzly3e3klbd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmtazenardkzly3e3klbd.png" alt="Image description" width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading my post and you can check my code on my github page: &lt;a href="https://github.com/chenyibo406/color-generator" rel="noopener noreferrer"&gt;https://github.com/chenyibo406/color-generator&lt;/a&gt; or on netify to see the whole project: &lt;a href="https://react-app-color-generator-ac.netlify.app/" rel="noopener noreferrer"&gt;https://react-app-color-generator-ac.netlify.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>gratitude</category>
    </item>
    <item>
      <title>With The Form Input element, I create a LOREM IPSUM Generating React App</title>
      <dc:creator>Austin Chen</dc:creator>
      <pubDate>Sun, 08 Jan 2023 10:49:29 +0000</pubDate>
      <link>https://dev.to/chenyibo406/with-the-form-input-element-create-a-lorem-ipsum-generating-react-app-3eme</link>
      <guid>https://dev.to/chenyibo406/with-the-form-input-element-create-a-lorem-ipsum-generating-react-app-3eme</guid>
      <description>&lt;p&gt;Hi! My name is Yibo Chen and I create an Lorem Ipsum Generating React App with the Input (Form Input) element.&lt;/p&gt;

&lt;p&gt;First of all, let's build the h3 title:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fai3cq3p8z13nnfd1qho5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fai3cq3p8z13nnfd1qho5.png" alt="Image description" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Secondly, let's set up the Form element with input element. Build the input element with control value, &lt;em&gt;&lt;strong&gt;onChange&lt;/strong&gt;&lt;/em&gt;, and pass data the the setCount useState and determine how many paragraph we want to generate in the page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gr04kme29vibk2a297n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gr04kme29vibk2a297n.png" alt="Image description" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the useState hook, we can build the how many page we want to show in the React app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9pdl3ttzg57qf8z4toz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk9pdl3ttzg57qf8z4toz.png" alt="Image description" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most importantly, let's build the button element to submit our data on the showing page.&lt;br&gt;
The onSubmit control element with handleSubmit function to change the data.&lt;br&gt;
Set the &lt;strong&gt;e.preventDefault()&lt;/strong&gt; to prevent the page refresh when the data change.&lt;/p&gt;

&lt;p&gt;With the** &lt;em&gt;parseInt(count)&lt;/em&gt;** we can slice the paragraphs to show on the page. And if the user select the number smaller than 0,  the showing amount of the paragraph should be one, but if the user select the number bigger than the data, and the showing amount of the paragraph should be eight.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8493fe3uk0s7wr56mqft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8493fe3uk0s7wr56mqft.png" alt="Image description" width="800" height="694"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because of the setText useState hook, we can use map() method to demonstrate the showing page of the text:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbxmhf1pf4oie46l3z0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbxmhf1pf4oie46l3z0c.png" alt="Image description" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank You for reading my article. Please check on my netify page: &lt;a href="https://react-app-lorem-ipsum-ac.netlify.app/" rel="noopener noreferrer"&gt;https://react-app-lorem-ipsum-ac.netlify.app/&lt;/a&gt;, or my github page: &lt;a href="https://github.com/chenyibo406/react-app-lorem-ipsum" rel="noopener noreferrer"&gt;https://github.com/chenyibo406/react-app-lorem-ipsum&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gratitude</category>
    </item>
    <item>
      <title>Create a Birthday Reminder with React App</title>
      <dc:creator>Austin Chen</dc:creator>
      <pubDate>Wed, 04 Jan 2023 04:56:41 +0000</pubDate>
      <link>https://dev.to/chenyibo406/create-a-birthday-reminder-with-react-app-1fi9</link>
      <guid>https://dev.to/chenyibo406/create-a-birthday-reminder-with-react-app-1fi9</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;learn to load data from a static JS file&lt;/li&gt;
&lt;li&gt;learn to use useState to store data&lt;/li&gt;
&lt;li&gt;learn to clear the state variable and see that reflected in the UI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1. Create the HTML hierarchy in App.js:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm42oytpda1hrjm3yir7j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm42oytpda1hrjm3yir7j.png" alt="Image description" width="800" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;App component h3 should contain the following text:&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;0 birthdays today&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;2. Create the List component in App.js and pass the data as props to List component:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv96be7m9tm95mjcbk5s0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv96be7m9tm95mjcbk5s0.png" alt="Image description" width="800" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;set how many people birthdays today based on the data.length&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;3. The data file have all the &lt;em&gt;image url, id, age, and name&lt;/em&gt; for List component:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1j631a15v5mhixjlp2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1j631a15v5mhixjlp2a.png" alt="Image description" width="800" height="819"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. List component&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mgxmncixbo1z28szo41.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mgxmncixbo1z28szo41.png" alt="Image description" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When pass the data as props to List component, we can deconstruct the props and map the passing data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frt1xqnxfmodwgwv2dqif.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frt1xqnxfmodwgwv2dqif.png" alt="Image description" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Add a “Clear” button which will reset it to 0 birthdays.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;For the clear all button as the following in App.js component:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Create a new state variable called people and useState Hook to accept the initial value as the imported data from the top.&lt;/li&gt;
&lt;li&gt;Pass this state variable in the List component.&lt;/li&gt;
&lt;li&gt;When the Clear button is pressed, empty the state variable so that no record is displayed (Hint: set it to an empty array)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqarg3513aunpxeigejlt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqarg3513aunpxeigejlt.png" alt="Image description" width="800" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Building the birthday reminder react app can help newbie understanding the basic useState Hook, export data and then store in the App.js variable. &lt;br&gt;
see more detail in my github page: &lt;a href="https://github.com/chenyibo406" rel="noopener noreferrer"&gt;https://github.com/chenyibo406&lt;/a&gt;&lt;br&gt;
I also update the birthday-app in netify, see my project at: &lt;a href="https://birthday-reminder-ac.netlify.app/" rel="noopener noreferrer"&gt;https://birthday-reminder-ac.netlify.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
  </channel>
</rss>
