{"id":32943,"date":"2024-11-01T09:12:38","date_gmt":"2024-11-01T09:12:38","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=32943"},"modified":"2024-11-01T11:21:22","modified_gmt":"2024-11-01T11:21:22","slug":"react-course-creating-a-counter-app-example","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/32943\/","title":{"rendered":"React Course: Creating a Counter App Example"},"content":{"rendered":"<p><body><\/p>\n<p>React is one of the most widely used JavaScript libraries for building UIs. In this tutorial, we will learn how to create a simple counter app using React. This app will be based on basic state management, event handling, and React&#8217;s component-based architecture.<\/p>\n<h2>1. Project Setup<\/h2>\n<p>First, let&#8217;s start a React project using <code>create-react-app<\/code>. This tool helps to easily set up a React app. Run the command below to create a React project.<\/p>\n<pre>\n        <code>npx create-react-app counter-app<\/code>\n    <\/pre>\n<p>Once the project is created, navigate to the generated directory.<\/p>\n<pre>\n        <code>cd counter-app<\/code>\n    <\/pre>\n<h2>2. Creating the Counter Component<\/h2>\n<p>Now, let&#8217;s create a counter component. Create a file named <code>Counter.js<\/code> inside the <code>src<\/code> folder and write the following code.<\/p>\n<pre>\n        <code>import React, { useState } from 'react';\n\nconst Counter = () =&gt; {\n    const [count, setCount] = useState(0);\n\n    const increment = () =&gt; {\n        setCount(count + 1);\n    };\n\n    const decrement = () =&gt; {\n        setCount(count - 1);\n    };\n\n    return (\n        <div classname=\"example\">\n            <h2>Count: {count}<\/h2>\n            <button onclick=\"{increment}\">Increment<\/button>\n            <button onclick=\"{decrement}\">Decrement<\/button>\n        <\/div>\n    );\n};\n\nexport default Counter;<\/code>\n    <\/pre>\n<h2>3. Adding the Counter Component<\/h2>\n<p>Now, let&#8217;s add this counter component to the main <code>App.js<\/code> file. Open the <code>src\/App.js<\/code> file and modify it as follows.<\/p>\n<pre>\n        <code>import React from 'react';\nimport Counter from '.\/Counter';\n\nfunction App() {\n    return (\n        <div classname=\"App\">\n            <h1>React Counter App<\/h1>\n            <counter><\/counter>\n        <\/div>\n    );\n}\n\nexport default App;<\/code>\n    <\/pre>\n<h2>4. Running the App<\/h2>\n<p>All code changes are complete, so we run the app with the following command.<\/p>\n<pre>\n        <code>npm start<\/code>\n    <\/pre>\n<p>Open <code>http:\/\/localhost:3000<\/code> in your web browser to see the basic counter app.<\/p>\n<h2>5. Adding Features<\/h2>\n<p>Now, let&#8217;s implement some additional features in the counter app. For example, we can add a button to reset the count and functionality to set maximum and minimum values.<\/p>\n<h3>5.1. Adding a Reset Button<\/h3>\n<p>Let&#8217;s add a reset button to the counter component. Modify the code as follows.<\/p>\n<pre>\n        <code>const reset = () =&gt; {\n        setCount(0);\n    };\n\n    return (\n        <div classname=\"example\">\n            <h2>Count: {count}<\/h2>\n            <button onclick=\"{increment}\">Increment<\/button>\n            <button onclick=\"{decrement}\">Decrement<\/button>\n            <button onclick=\"{reset}\">Reset<\/button>\n        <\/div>\n    );<\/code>\n    <\/pre>\n<h3>5.2. Limiting Maximum and Minimum Values<\/h3>\n<p>Now, let&#8217;s ensure that the count does not exceed maximum and minimum values. Modify the code as follows.<\/p>\n<pre>\n        <code>const MAX_COUNT = 10;\nconst MIN_COUNT = 0;\n\nconst increment = () =&gt; {\n    if (count &lt; MAX_COUNT) {\n        setCount(count + 1);\n    }\n};\n\nconst decrement = () =&gt; {\n    if (count &gt; MIN_COUNT) {\n        setCount(count - 1);\n    }\n};<\/code>\n    <\/pre>\n<h2>6. Efficiency of State Management<\/h2>\n<p>There are several ways to manage state in React. For simple cases like this app, the <code>useState<\/code> hook is appropriate. However, as the application grows or state management becomes more complex, consider using external state management libraries like <code>Context API<\/code> or <code>Redux<\/code>.<\/p>\n<h2>7. Conclusion<\/h2>\n<p>In this tutorial, we created a simple counter app using React. We learned about basic state management, event handling, and component-based architecture. Based on these fundamentals, we are now ready to develop more complex applications.<\/p>\n<h2>8. Next Steps<\/h2>\n<p>Try expanding your counter app by implementing more features or improving the design. Leveraging the various capabilities of React allows you to develop much more complex and attractive applications. In the next tutorial, we will learn how to create a multi-page application using React Router.<\/p>\n<footer>\n<p>I hope this tutorial was helpful! If you have any questions or feedback, please leave a comment!<\/p>\n<\/footer>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>React is one of the most widely used JavaScript libraries for building UIs. In this tutorial, we will learn how to create a simple counter app using React. This app will be based on basic state management, event handling, and React&#8217;s component-based architecture. 1. Project Setup First, let&#8217;s start a React project using create-react-app. This &hellip; <a href=\"https:\/\/atmokpo.com\/w\/32943\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;React Course: Creating a Counter App Example&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[123],"tags":[],"class_list":["post-32943","post","type-post","status-publish","format-standard","hentry","category-react-basics-course"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>React Course: Creating a Counter App Example - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/32943\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React Course: Creating a Counter App Example - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"React is one of the most widely used JavaScript libraries for building UIs. In this tutorial, we will learn how to create a simple counter app using React. This app will be based on basic state management, event handling, and React&#8217;s component-based architecture. 1. Project Setup First, let&#8217;s start a React project using create-react-app. This &hellip; \ub354 \ubcf4\uae30 &quot;React Course: Creating a Counter App Example&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/32943\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:12:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:21:22+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"2\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/32943\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32943\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"React Course: Creating a Counter App Example\",\"datePublished\":\"2024-11-01T09:12:38+00:00\",\"dateModified\":\"2024-11-01T11:21:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32943\/\"},\"wordCount\":381,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"React basics course\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/32943\/\",\"url\":\"https:\/\/atmokpo.com\/w\/32943\/\",\"name\":\"React Course: Creating a Counter App Example - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:12:38+00:00\",\"dateModified\":\"2024-11-01T11:21:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32943\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/32943\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/32943\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React Course: Creating a Counter App Example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"React Course: Creating a Counter App Example - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/32943\/","og_locale":"ko_KR","og_type":"article","og_title":"React Course: Creating a Counter App Example - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"React is one of the most widely used JavaScript libraries for building UIs. In this tutorial, we will learn how to create a simple counter app using React. This app will be based on basic state management, event handling, and React&#8217;s component-based architecture. 1. Project Setup First, let&#8217;s start a React project using create-react-app. This &hellip; \ub354 \ubcf4\uae30 \"React Course: Creating a Counter App Example\"","og_url":"https:\/\/atmokpo.com\/w\/32943\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:12:38+00:00","article_modified_time":"2024-11-01T11:21:22+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"2\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/32943\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/32943\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"React Course: Creating a Counter App Example","datePublished":"2024-11-01T09:12:38+00:00","dateModified":"2024-11-01T11:21:22+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/32943\/"},"wordCount":381,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["React basics course"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/32943\/","url":"https:\/\/atmokpo.com\/w\/32943\/","name":"React Course: Creating a Counter App Example - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:12:38+00:00","dateModified":"2024-11-01T11:21:22+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/32943\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/32943\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/32943\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"React Course: Creating a Counter App Example"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=32943"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32943\/revisions"}],"predecessor-version":[{"id":32944,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32943\/revisions\/32944"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=32943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=32943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=32943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}