{"id":32957,"date":"2024-11-01T09:12:44","date_gmt":"2024-11-01T09:12:44","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=32957"},"modified":"2024-11-01T11:21:19","modified_gmt":"2024-11-01T11:21:19","slug":"react-course-functions","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/32957\/","title":{"rendered":"React Course: Functions"},"content":{"rendered":"<p>\n    React is a JavaScript library widely used for building user interfaces. To understand and utilize React effectively, it is important to have a clear understanding of the concept of functions. In this course, we will delve into how functions are used in React and explore how functional programming is applied in modern web development.\n<\/p>\n<h2>1. Definition of Functions in React<\/h2>\n<p>\n    In React, a function is a fundamental unit that contains the logic necessary for managing state or updating the screen. React supports defining UI using functional components. A functional component is a JavaScript function that returns JSX, which is rendered on the screen. Functional components are simple and intuitive, and they can utilize React&#8217;s Hook features for state and lifecycle methods.\n<\/p>\n<h2>2. Functional Components vs. Class Components<\/h2>\n<p>\n    React primarily allows defining components in two ways: class components and functional components. Class components are defined using ES6 classes and tend to be harder to maintain and test, resulting in relatively larger amounts of code. On the other hand, functional components are simple and lightweight, making them easier to maintain due to shorter code.\n<\/p>\n<p>\n    Functional components are defined as follows:\n<\/p>\n<pre>\n<code>\nfunction MyComponent() {\n    return &lt;div&gt;Hello, World!&lt;\/div&gt;;\n}\n<\/code>\n<\/pre>\n<p>\n    Class components are defined as follows:\n<\/p>\n<pre>\n<code>\nclass MyComponent extends React.Component {\n    render() {\n        return &lt;div&gt;Hello, World!&lt;\/div&gt;;\n    }\n}\n<\/code>\n<\/pre>\n<h2>3. Advantages of Functional Components<\/h2>\n<ul>\n<li>\n<strong>Simplicity:<\/strong> Functional components can be written with less code and are easy to understand. They can render the UI simply without complex state management.\n    <\/li>\n<li>\n<strong>Performance Optimization:<\/strong> React can optimize functional components through memoization, allowing the framework to skip rendering components if it&#8217;s not necessary, significantly improving performance.\n    <\/li>\n<li>\n<strong>Managing Side Effects:<\/strong> Hooks allow for easier management of side effects, simplifying state management.\n    <\/li>\n<\/ul>\n<h2>4. State Management through React Hooks<\/h2>\n<p>\n    Introduced in React version 16.8, Hooks are the most effective way to manage state in functional components. The most commonly used hooks are useState and useEffect.\n<\/p>\n<h3>4.1 useState Hook<\/h3>\n<p>\n    useState adds a state variable and returns a function to update the state. Here\u2019s how to use it:\n<\/p>\n<pre>\n<code>\nimport React, { useState } from 'react';\n\nfunction Counter() {\n    const [count, setCount] = useState(0);\n\n    return (\n        &lt;div&gt;\n            &lt;p&gt;Current Count: {count}&lt;\/p&gt;\n            &lt;button onClick={() =&gt; setCount(count + 1)}&gt;Increase&lt;\/button&gt;\n        &lt;\/div&gt;\n    );\n}\n<\/code>\n<\/pre>\n<h3>4.2 useEffect Hook<\/h3>\n<p>\n    useEffect is a hook that allows performing specific actions every time the component renders. Here\u2019s an example of using useEffect.\n<\/p>\n<pre>\n<code>\nimport React, { useState, useEffect } from 'react';\n\nfunction Timer() {\n    const [seconds, setSeconds] = useState(0);\n\n    useEffect(() =&gt; {\n        const interval = setInterval(() =&gt; setSeconds(s =&gt; s + 1), 1000);\n        return () =&gt; clearInterval(interval);\n    }, []);\n\n    return &lt;p&gt;Elapsed Time: {seconds} seconds&lt;\/p&gt;\n}\n<\/code>\n<\/pre>\n<h2>5. Advanced Hooks<\/h2>\n<p>\n    Using advanced hooks like useReducer and useContext is useful when more complex state management is needed. In particular, useReducer is beneficial for managing complex state logic or multiple sub-values, such as in managing a todo list.\n<\/p>\n<pre>\n<code>\nimport React, { useReducer } from 'react';\n\nconst initialState = { todos: [] };\n\nfunction reducer(state, action) {\n    switch (action.type) {\n        case 'ADD_TODO':\n            return { todos: [...state.todos, action.todo] };\n        default:\n            throw new Error();\n    }\n}\n\nfunction TodoApp() {\n    const [state, dispatch] = useReducer(reducer, initialState);\n    \n    const addTodo = todo =&gt; dispatch({ type: 'ADD_TODO', todo });\n\n    return (\n        &lt;div&gt;\n            &lt;h1&gt;To Do List&lt;\/h1&gt;\n            &lt;button onClick={() =&gt; addTodo('New Task')}&gt;Add&lt;\/button&gt;\n            &lt;ul&gt;\n                {state.todos.map((todo, index) =&gt; &lt;li key={index}&gt;{todo}&lt;\/li&gt;)}\n            &lt;\/ul&gt;\n        &lt;\/div&gt;\n    );\n}\n<\/code>\n<\/pre>\n<h2>6. Basic Principles of Functional Programming<\/h2>\n<p>\n    React tends to follow a functional programming paradigm. Let&#8217;s explore some basic principles.\n<\/p>\n<ul>\n<li>\n<strong>Pure Functions:<\/strong> The output should depend only on the input and should not affect external state.\n    <\/li>\n<li>\n<strong>Immutability of State:<\/strong> Rather than directly changing the state, a new state is returned.\n    <\/li>\n<li>\n<strong>Higher-order Functions:<\/strong> Functions that take functions as arguments or return functions. In React, this is exemplified by passing components through props.\n    <\/li>\n<\/ul>\n<h2>7. Conclusion<\/h2>\n<p>\n    React follows a functional programming paradigm and offers many advantages in defining UI and managing state through functional components. In this course, we explored the definition and advantages of functional components, React Hooks, and the key principles of functional programming. By effectively utilizing functions in React, you can build more efficient and manageable applications.\n<\/p>\n<p>For more information, please refer to the official React documentation (<a href=\"https:\/\/reactjs.org\/docs\/getting-started.html\">here<\/a>).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>React is a JavaScript library widely used for building user interfaces. To understand and utilize React effectively, it is important to have a clear understanding of the concept of functions. In this course, we will delve into how functions are used in React and explore how functional programming is applied in modern web development. 1. &hellip; <a href=\"https:\/\/atmokpo.com\/w\/32957\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;React Course: Functions&#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-32957","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: Functions - \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\/32957\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React Course: Functions - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"React is a JavaScript library widely used for building user interfaces. To understand and utilize React effectively, it is important to have a clear understanding of the concept of functions. In this course, we will delve into how functions are used in React and explore how functional programming is applied in modern web development. 1. &hellip; \ub354 \ubcf4\uae30 &quot;React Course: Functions&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/32957\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:12:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:21:19+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=\"3\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/32957\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32957\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"React Course: Functions\",\"datePublished\":\"2024-11-01T09:12:44+00:00\",\"dateModified\":\"2024-11-01T11:21:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32957\/\"},\"wordCount\":510,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"React basics course\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/32957\/\",\"url\":\"https:\/\/atmokpo.com\/w\/32957\/\",\"name\":\"React Course: Functions - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:12:44+00:00\",\"dateModified\":\"2024-11-01T11:21:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/32957\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/32957\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/32957\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React Course: Functions\"}]},{\"@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: Functions - \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\/32957\/","og_locale":"ko_KR","og_type":"article","og_title":"React Course: Functions - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"React is a JavaScript library widely used for building user interfaces. To understand and utilize React effectively, it is important to have a clear understanding of the concept of functions. In this course, we will delve into how functions are used in React and explore how functional programming is applied in modern web development. 1. &hellip; \ub354 \ubcf4\uae30 \"React Course: Functions\"","og_url":"https:\/\/atmokpo.com\/w\/32957\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:12:44+00:00","article_modified_time":"2024-11-01T11:21:19+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":"3\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/32957\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/32957\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"React Course: Functions","datePublished":"2024-11-01T09:12:44+00:00","dateModified":"2024-11-01T11:21:19+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/32957\/"},"wordCount":510,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["React basics course"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/32957\/","url":"https:\/\/atmokpo.com\/w\/32957\/","name":"React Course: Functions - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:12:44+00:00","dateModified":"2024-11-01T11:21:19+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/32957\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/32957\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/32957\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"React Course: Functions"}]},{"@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\/32957","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=32957"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32957\/revisions"}],"predecessor-version":[{"id":32958,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/32957\/revisions\/32958"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=32957"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=32957"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=32957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}