<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>suuuuuu_.log</title>
        <link>https://velog.io/</link>
        <description>히_뚜</description>
        <lastBuildDate>Thu, 05 Sep 2024 08:33:33 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>suuuuuu_.log</title>
            <url>https://velog.velcdn.com/images/suuuuuu_/profile/eb6d4ac9-34e2-4494-8ba1-e1b69a1229dc/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. suuuuuu_.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/suuuuuu_" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[2024.09.05]]></title>
            <link>https://velog.io/@suuuuuu_/2024.09.05</link>
            <guid>https://velog.io/@suuuuuu_/2024.09.05</guid>
            <pubDate>Thu, 05 Sep 2024 08:33:33 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.09.03]]></title>
            <link>https://velog.io/@suuuuuu_/2024.09.03</link>
            <guid>https://velog.io/@suuuuuu_/2024.09.03</guid>
            <pubDate>Tue, 03 Sep 2024 04:16:52 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.09.02]]></title>
            <link>https://velog.io/@suuuuuu_/2024.09.02</link>
            <guid>https://velog.io/@suuuuuu_/2024.09.02</guid>
            <pubDate>Mon, 02 Sep 2024 08:33:15 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.08.31]]></title>
            <link>https://velog.io/@suuuuuu_/2024.08.31</link>
            <guid>https://velog.io/@suuuuuu_/2024.08.31</guid>
            <pubDate>Sat, 31 Aug 2024 02:41:16 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.08.30]]></title>
            <link>https://velog.io/@suuuuuu_/2024.08.30</link>
            <guid>https://velog.io/@suuuuuu_/2024.08.30</guid>
            <pubDate>Fri, 30 Aug 2024 06:25:19 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.08.28]]></title>
            <link>https://velog.io/@suuuuuu_/2024.08.28</link>
            <guid>https://velog.io/@suuuuuu_/2024.08.28</guid>
            <pubDate>Wed, 28 Aug 2024 13:00:40 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.08.26]]></title>
            <link>https://velog.io/@suuuuuu_/2024.08.26</link>
            <guid>https://velog.io/@suuuuuu_/2024.08.26</guid>
            <pubDate>Mon, 26 Aug 2024 05:11:57 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.08.19]]></title>
            <link>https://velog.io/@suuuuuu_/2024.08.19</link>
            <guid>https://velog.io/@suuuuuu_/2024.08.19</guid>
            <pubDate>Mon, 19 Aug 2024 12:37:40 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.08.16]]></title>
            <link>https://velog.io/@suuuuuu_/2024.08.16</link>
            <guid>https://velog.io/@suuuuuu_/2024.08.16</guid>
            <pubDate>Fri, 16 Aug 2024 14:14:26 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.08.13]]></title>
            <link>https://velog.io/@suuuuuu_/2024.08.13</link>
            <guid>https://velog.io/@suuuuuu_/2024.08.13</guid>
            <pubDate>Tue, 13 Aug 2024 01:12:53 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.08.09]]></title>
            <link>https://velog.io/@suuuuuu_/2024.08.09</link>
            <guid>https://velog.io/@suuuuuu_/2024.08.09</guid>
            <pubDate>Fri, 09 Aug 2024 14:10:01 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2024.08.08]]></title>
            <link>https://velog.io/@suuuuuu_/2024.08.08</link>
            <guid>https://velog.io/@suuuuuu_/2024.08.08</guid>
            <pubDate>Wed, 07 Aug 2024 17:16:53 GMT</pubDate>
            <description><![CDATA[<p>2024.08.08</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2024.08.07]]></title>
            <link>https://velog.io/@suuuuuu_/2024.08.07</link>
            <guid>https://velog.io/@suuuuuu_/2024.08.07</guid>
            <pubDate>Wed, 07 Aug 2024 04:48:23 GMT</pubDate>
            <description><![CDATA[<p>.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[tailwindcss/css 반응형 웹사이트]]></title>
            <link>https://velog.io/@suuuuuu_/tailwindcsscss-%EB%B0%98%EC%9D%91%ED%98%95-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8</link>
            <guid>https://velog.io/@suuuuuu_/tailwindcsscss-%EB%B0%98%EC%9D%91%ED%98%95-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8</guid>
            <pubDate>Wed, 17 Jul 2024 00:49:49 GMT</pubDate>
            <description><![CDATA[<p>tailwindcss는 className에 스타일을 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4로 설정하고 </p>
<ul>
<li><code>grid-cols-1</code>: 기본 사이즈 세로 1줄</li>
<li><code>md:grid-cols-2</code>:  브라우저 사이즈가 md(768px) 이상일 때, 세로 2줄</li>
<li><code>lg:grid-cols-3</code>: 브라우저 사이즈가 lg(1024px) 이상일 때, 세로 3줄
이런 뜻을 가지고 있다</li>
</ul>
<pre><code class="language-javascript">export default async function Home() {
  // 무료 상품 API 문서: https://fakestoreapi.com/docs
  const response = await fetch(&#39;https://fakestoreapi.com/products&#39;);
  const products = await response.json();
  return (
    &lt;div className=&quot;grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4&quot;&gt;
      {products.map((product: Product) =&gt; (
        &lt;div key={product.id} className=&quot;border shadow-sm&quot;&gt;
          &lt;Image src={product.image} alt={product.title} width={200} height={200} /&gt;
          &lt;h1&gt;{product.title}&lt;/h1&gt;
          &lt;p&gt;{product.price}&lt;/p&gt;
        &lt;/div&gt;
      ))}
    &lt;/div&gt;
  );
}</code></pre>
<p>코드에서는 이렇게 사용되며 next.config.mjs에 설정해주면 된다</p>
<pre><code class="language-javascript">/* next.config.mjs */
/** @type {import(&#39;next&#39;).NextConfig} */
const nextConfig = {
  images: {
    remotePatterns: [
      {
        protocol: &quot;https&quot;,
        hostname: &quot;fakestoreapi.com&quot;,
      },
    ],
  },
};

export default nextConfig;</code></pre>
<p>일반 css는</p>
<pre><code class="language-javascript">@media (조건) {
  스타일
}

/* 브라우저 너비가 768px 이상의 사이즈에서 아래 속성(display: flex)을 적용한다. */
@media (min-width: 768px) {
  .클래스명 {
    display: flex;
  }
}

/* 브라우저 너비가 768px 이하의 사이즈에서 아래 속성(display: flex)을 적용한다. */
@media (max-width: 768px) {
  .클래스명 {
    display: flex;
  }
}</code></pre>
<p>css를 작성하듯이 작성하면 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[문제해결]vs코드 배포 오류 ]]></title>
            <link>https://velog.io/@suuuuuu_/%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0vs%EC%BD%94%EB%93%9C-%EB%B0%B0%ED%8F%AC-%EC%98%A4%EB%A5%98</link>
            <guid>https://velog.io/@suuuuuu_/%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0vs%EC%BD%94%EB%93%9C-%EB%B0%B0%ED%8F%AC-%EC%98%A4%EB%A5%98</guid>
            <pubDate>Fri, 28 Jun 2024 01:19:26 GMT</pubDate>
            <description><![CDATA[<p>배포 단계에서 오류가 발생하여 코드와 Git을 번갈아보며 문제의 원인을 찾았습니다. 문제의 원인은 처음에 컴포넌트 파일의 이름을 소문자에서 대문자로 변경한 것이 원인으로 추측되었습니다. Git은 파일 이름의 대소문자 변경을 인식하지 못하는 경우가 있어, 이러한 변경이 문제가 될 수 있습니다.</p>
<p>해결 방법
폴더명 변경: 먼저 코드로 돌아가 현재 컴포넌트 폴더의 이름을 완전히 다른 이름으로 변경하고 이를 커밋합니다.
원래 이름으로 복구: 그런 다음, 다시 원래 의도했던 대문자로 변경된 컴포넌트 폴더 이름으로 수정하고 커밋합니다.
배포 시도: 이러한 단계를 거친 후, 성공적으로 배포를 완료할 수 있었습니다.
이 과정을 통해 배포 오류를 해결하고 문제 없이 배포를 마칠 수 있었습니다. 대소문자 변경과 관련된 Git의 특성을 이해하는 것이 중요하다는 것을 다시 한번 깨달았습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ React 컴포넌트란?]]></title>
            <link>https://velog.io/@suuuuuu_/React-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8%EB%9E%80</link>
            <guid>https://velog.io/@suuuuuu_/React-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8%EB%9E%80</guid>
            <pubDate>Tue, 28 May 2024 01:33:21 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h4 id="⚡컴포넌트-component란">⚡컴포넌트 (Component)란?</h4>
<p>리액트는 화면에서 UI 요소를 구분할 때 &#39;컴포넌트&#39;라는 단위를 사용합니다.
쉽게 말하면 리액트에서 앱을 이루는 가장 작은 조각이라고 할 수 있고, 레고 블록으로 집을 쌓게 된 경우 하나의 블록이 &#39;컴포넌트&#39;라고 할 수 있습니다.
리액트의 중요한 핵심인 &#39;컴포넌트&#39;에는 함수 컴포넌트, 클래스 컴포넌트 2가지가 있습니다. </p>
</blockquote>
<p>• 컴포넌트 구성 요소 </p>
<p>1) property(props) </p>
<ul>
<li>부모 컴포넌트에서 자식 컴포넌트에 전달되는 데이터입니다. 프로퍼티값은 자식 컴포넌트에서 수정할 수 없습니다. 
2) state</li>
<li>컴포넌트의 상태를 저장하고 수정 가능한 데이터입니다. 
3) context </li>
<li>부모 컴포넌트에서 생성하여 모든 자식 컴포넌트에게 전달하는 데이터입니다. </li>
</ul>
<h4 id="📌함수function-컴포넌트">📌함수(Function) 컴포넌트</h4>
<p>자바스크립트의 &quot;함수(function)&quot; 기반 컴포넌트입니다. 자바스크립트 함수를 선언하듯이 function 으로 컴포넌트를 정의하고, return 문에 JSX 코드를 반환합니다.</p>
<pre><code class="language-javascript">function MyComponent() {
  return (
    &lt;div&gt;
      Hello React!
    &lt;/div&gt;
  );
}</code></pre>
<p>또는 화살표 문법으로도 나타낼 수 있다.</p>
<pre><code class="language-javascript">const MyComponent = () =&gt; {
    return (
        &lt;div&gt;
            Hello React!
        &lt;/div&gt;
    );
};</code></pre>
<h4 id="📌클래스class-컴포넌트">📌클래스(Class) 컴포넌트</h4>
<p>클래스 컴포넌트는  자바스크립트의 &quot;클래스&quot; 기반 컴포넌트로, class로 정의하고 render() 함수에서 jsx 코드를 반환합니다. </p>
<p>• 클래스 컴포넌트 특징 </p>
<p>1) class 키워드로 클래스 컴포넌트 생성2) React.Component 상속
React의 ComponentClass를 상속받아  Component 상속이 필요해요. 
3) render () 메서드 필수로 사용  
 클래스 컴포넌트 안에 render() 메서드가 꼭 필요하고 메서드 안에 JSX 를 리턴합니다. 
4) this 키워드 사용하기 
state, props, refs,컴포넌트 메서드, 생명주기 메서드를 사용할 때 this 로 프로퍼티를 참조하여 사용합니다. </p>
<p>• 클래스 컴포넌트 생성하기 
클래스 컴포넌트는 React의 ComponentClass를 상속받아 구현되기 때문에 반드시 {Component}를 import 하고 React.Component 를 상속받아야합니다. </p>
<pre><code class="language-javascript">import React, { Component } from &#39;react&#39;;</code></pre>
<p>Component 를 상속받고, render() 메서드를 통해 return 문 안에 있는 JSX 코드를 반환합니다. </p>
<pre><code class="language-javascript">class MyComponent2 extends Component {
    render() {
        return (
            &lt;div&gt;
                Hello React!
            &lt;/div&gt;
        );
    }
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[useState란?]]></title>
            <link>https://velog.io/@suuuuuu_/useState%EB%9E%80</link>
            <guid>https://velog.io/@suuuuuu_/useState%EB%9E%80</guid>
            <pubDate>Thu, 23 May 2024 12:23:23 GMT</pubDate>
            <description><![CDATA[<h3 id="상황-설명"><strong>상황 설명</strong></h3>
<p>당신의 집에는 빛을 켜고 끄는 스위치가 있습니다. 이 스위치는 두 가지 상태를 가집니다: 켜짐(on)과 꺼짐(off). 이제 이 스위치를 <strong><code>useState</code></strong>를 사용하여 설명해보겠습니다.</p>
<h3 id="상태state란-무엇인가"><strong>상태(state)란 무엇인가?</strong></h3>
<p>상태는 어떤 것의 현재 상황이나 조건을 나타냅니다. 예를 들어, 스위치의 상태는 &quot;켜짐&quot; 또는 &quot;꺼짐&quot;일 수 있습니다.</p>
<h3 id="usestate가-무엇인가"><strong><code>useState</code>가 무엇인가?</strong></h3>
<ul>
<li><em><code>useState</code></em>는 이 상태를 관리하고 변경할 수 있게 해주는 도구입니다. React에서는 웹 페이지나 애플리케이션의 상태를 관리하기 위해 *<em><code>useState</code></em>를 사용합니다.</li>
</ul>
<h3 id="usestate-사용-예시"><strong><code>useState</code> 사용 예시</strong></h3>
<ol>
<li><p><strong>상태를 선언하기</strong>
스위치의 상태를 선언합니다. 초기 상태는 &quot;꺼짐&quot;으로 설정합니다.</p>
<pre><code class="language-jsx"> const [switchState, setSwitchState] = useState(&#39;off&#39;);
</code></pre>
<p> 여기서:</p>
<ul>
<li><em><code>switchState</code></em>는 스위치의 현재 상태입니다. 초기값은 &#39;off&#39;입니다.</li>
<li><em><code>setSwitchState</code></em>는 스위치의 상태를 변경할 수 있는 함수입니다.</li>
</ul>
</li>
<li><p><strong>상태를 변경하기</strong>
스위치를 켜거나 끄는 함수입니다. 스위치를 누르면 상태가 변경됩니다.</p>
<pre><code class="language-jsx"> function toggleSwitch() {
   if (switchState === &#39;off&#39;) {
     setSwitchState(&#39;on&#39;);
   } else {
     setSwitchState(&#39;off&#39;);
   }
 }
</code></pre>
<p> 이 함수는 스위치가 꺼져있으면 켜고, 켜져있으면 끄는 역할을 합니다.</p>
</li>
<li><p><strong>상태를 사용하기</strong>
상태를 사용하여 스위치의 상태를 표시합니다.</p>
<pre><code class="language-jsx"> javascript코드 복사
 return (
   &lt;div&gt;
     &lt;p&gt;Switch is {switchState}&lt;/p&gt;
     &lt;button onClick={toggleSwitch}&gt;Toggle Switch&lt;/button&gt;
   &lt;/div&gt;
 );
</code></pre>
<p> 여기서:</p>
<ul>
<li><em><code>Switch is {switchState}</code></em>는 현재 스위치의 상태를 화면에 보여줍니다.</li>
<li><strong><code>Toggle Switch</code></strong> 버튼을 클릭하면 <strong><code>toggleSwitch</code></strong> 함수가 호출되어 스위치의 상태가 변경됩니다.</li>
</ul>
</li>
</ol>
<h3 id="종합-예시"><strong>종합 예시</strong></h3>
<p>이제 위의 모든 것을 합쳐보겠습니다.</p>
<pre><code class="language-jsx">javascript코드 복사
import React, { useState } from &#39;react&#39;;

function LightSwitch() {
  const [switchState, setSwitchState] = useState(&#39;off&#39;);

  function toggleSwitch() {
    if (switchState === &#39;off&#39;) {
      setSwitchState(&#39;on&#39;);
    } else {
      setSwitchState(&#39;off&#39;);
    }
  }

  return (
    &lt;div&gt;
      &lt;p&gt;Switch is {switchState}&lt;/p&gt;
      &lt;button onClick={toggleSwitch}&gt;Toggle Switch&lt;/button&gt;
    &lt;/div&gt;
  );
}

export default LightSwitch;
</code></pre>
<p>이 코드에서:</p>
<ul>
<li><em><code>useState(&#39;off&#39;)</code></em>는 스위치의 초기 상태를 &#39;off&#39;로 설정합니다.</li>
<li><strong><code>toggleSwitch</code></strong> 함수는 스위치의 상태를 &#39;on&#39; 또는 &#39;off&#39;로 전환합니다.</li>
<li>버튼을 클릭하면 스위치의 상태가 변경되고, 화면에 현재 상태가 업데이트됩니다.<img src="https://velog.velcdn.com/images/suuuuuu_/post/49cd262b-5ec9-491e-be3f-2f720a99150f/image.jpg" alt=""></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[props란?]]></title>
            <link>https://velog.io/@suuuuuu_/props%EB%9E%80</link>
            <guid>https://velog.io/@suuuuuu_/props%EB%9E%80</guid>
            <pubDate>Thu, 23 May 2024 05:15:57 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/suuuuuu_/post/e5cdb3ab-a98e-4434-bb7a-dd840cf1f3b1/image.png" alt=""></p>
<blockquote>
<h2 id="props">props</h2>
<p>properties의 줄임말로 상위 컴포넌트가 하위 컴포넌트에 값을 전달(단방향 데이터 흐름) 할때 사용합니다.(단방향)
 자식 컴포넌트에서 props는 읽기 전용으로 수정이 불가하다는 특징을 가지고 있습니다. 
 함수 컴포넌트, 클래스 컴포넌트 모두 컴포넌트의 자체 props를 수정할 수 없습니다.
 부모 컴포넌트의 props를 변경하면, 해당 props를 사용하고 있던 자식 컴포넌트는 리렌더링 됩니다.</p>
</blockquote>
<h5 id="사용방법">사용방법</h5>
<p> 프로퍼티에 문자열을 전달할 때는 큰따옴표(&quot; &quot;)를, 문자열 외의 값을 전달할 때는 중괄호({ })를 사용 한다. </p>
<h2 id="컴포넌트에-props-전달하기">컴포넌트에 props 전달하기</h2>
<p>React 컴포넌트는 props를 이용해 서로 통신합니다. 모든 부모 컴포넌트는 props를 줌으로써 몇몇의 정보를 자식 컴포넌트에게 전달할 수 있습니다. props는 HTML 어트리뷰트를 생각나게 할 수도 있지만, 객체, 배열, 함수를 포함한 모든 JavaScript 값을 전달할 수 있습니다.</p>
<p>코드와 함께 살펴보면</p>
<pre><code class="language-javascript">export default function Profile() {
  return (
    &lt;Avatar /&gt;
  );
}</code></pre>
<p>위의 코드는 어떠한 전달하지 않는 부모 컴포넌트가 <strong>Profile</strong> 자식 컴포넌트가 <strong>Avatar</strong>인 코드입니다.</p>
<h2 id="자식-컴포넌트에-props-전달하기">자식 컴포넌트에 props 전달하기</h2>
<pre><code class="language-javascript">export defeult function profile() {
  return(
    &lt;Avatar
     person={{ name: &#39;Lin Lanying&#39;, imageId: &#39;1bX5QH6&#39; }} //{}중괄호안의 객체
  size={100}
    /&gt;
   );
}</code></pre>
<p>위의 코드는 부모가 자식에게 person (객체)와 size (숫자)를 전달했습니다.
여기서 중괄호가 두번쓰이는것은 중괄호안의 객체를 뜻합니다.</p>
<h2 id="자식-컴포넌트-내부에서-props-읽기">자식 컴포넌트 내부에서 props 읽기</h2>
<pre><code class="language-javascript">function Avatar({ person, size }) {
  // person과 size는 이곳에서 사용가능합니다.
}</code></pre>
<p>Avatar에 렌더링을 위해 person 과 size props를 사용하는 로직을 추가하면 완료됩니다.</p>
<p>이제 Avatar를 다른 props를 이용해 다양한 방식으로 렌더링하도록 구성할 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[배열 메소드]]></title>
            <link>https://velog.io/@suuuuuu_/%EB%B0%B0%EC%97%B4-%EB%A9%94%EC%86%8C%EB%93%9C</link>
            <guid>https://velog.io/@suuuuuu_/%EB%B0%B0%EC%97%B4-%EB%A9%94%EC%86%8C%EB%93%9C</guid>
            <pubDate>Tue, 21 May 2024 08:35:24 GMT</pubDate>
            <description><![CDATA[<p>배열 메소드에 대해서 알아보자</p>
<p><strong>배열</strong></p>
<pre><code class="language-javascript">const persons = [
{ name: &quot;철수&quot;, age: 19, gender: &quot;남&quot; },
{ name: &quot;짱구&quot;, age: 20, gender: &quot;남&quot; },
{ name: &quot;유리&quot;, age: 21, gender: &quot;여&quot; },
];</code></pre>
<blockquote>
<h4 id="find">find</h4>
<p>배열에서 조건(return 우측의 연산자)에 만족하는 가장 먼저 발견된 것 하나만 찾을 수 있다.</p>
</blockquote>
<pre><code class="language-javascript">ex)
const person = persons.find((person) =&gt; {
  return person.gender === &quot;여&quot;
});
  console.log(person);</code></pre>
<p><strong>결과</strong>
<img src="https://velog.velcdn.com/images/suuuuuu_/post/c21bbcd2-a7d9-47ad-abb0-5a4ed007667d/image.png" alt=""></p>
<hr>
<blockquote>
<h4 id="filter">filter</h4>
<p>배열에서 조건(return 우측의 연산자)에 만족하는 요소만 필터링
새로운 배열을 만들어 줌 (기존 배열은 그대로 둔다)</p>
</blockquote>
<pre><code class="language-javascript">ex)
const result = persons.filter((person) =&gt; {
    return person.gender === &quot;남&quot;
  });

  console.log(result);</code></pre>
<p><strong>결과</strong></p>
<p><img src="https://velog.velcdn.com/images/suuuuuu_/post/19549c49-d9c3-4f85-87a5-4152a735afcb/image.png" alt=""></p>
<hr>
<blockquote>
<h4 id="map">map</h4>
</blockquote>
<ul>
<li><p>forEach와 똑같이 전체 배열 접근</p>
</li>
<li><p>forEach와 다른 점: <strong>새로운 배열</strong>을 만들어줌 → 변수에 담기 가능</p>
<pre><code>⇒ 이 부분은 상당히 중요합니다. 리액트에서 forEach를 쓰지 않고 map을 쓰는 이유 </code></pre><ul>
<li>각 요소가 바뀌었으면 하는 형태를 return 우측에 작성하기</li>
</ul>
<pre><code class="language-javascript">ex)
const plus = persons.map((person) =&gt; {
return {
  name: person.name,
  age: person.age + 10,
  gender: person.gender ,
}
})
console.log(plus);</code></pre>
</li>
<li><p><em>결과*</em>
<img src="https://velog.velcdn.com/images/suuuuuu_/post/62893358-7313-4b0c-8fe9-123dc7fea61c/image.png" alt=""></p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[React 입문]]></title>
            <link>https://velog.io/@suuuuuu_/React-%EC%9E%85%EB%AC%B8</link>
            <guid>https://velog.io/@suuuuuu_/React-%EC%9E%85%EB%AC%B8</guid>
            <pubDate>Fri, 17 May 2024 11:53:09 GMT</pubDate>
            <description><![CDATA[<h2 id="react">React</h2>
<blockquote>
<p>reactsms UI를 만드는javascript 라이브러리다.
쉽게 말하면 화면에 보이는 버튼이나 텍스트 상자 등을 코드로 묶어 재사용하기 편한 코드묶음이라고 생각하면 된다.</p>
</blockquote>
<h2 id="jsx">JSX</h2>
<blockquote>
<p>react는 <strong>JSX문법</strong>을 사용하는데 JSX는 <strong>JavaScript eXtension</strong>의 줄임말로 
JS와 XML이 합쳐져
HTML과 JS의 형식과 문법이 유사하여 중첩된 태그들의 구조를 파악하기 쉽다.</p>
</blockquote>
<h2 id="ui">UI</h2>
<blockquote>
<p>사용자 인터페이스(user interfaces, UI)
사용자 인터페이스 또는 유저 인터페이스(user interfaces, UI)는 사람(사용자)과 사물 또는 시스템(기계, 컴퓨터 프로그램 등) 사이에서 의사소통을 할 수 있도록 돕는 물리적, 가상적 매개체</p>
</blockquote>
<h2 id="라이브러리library">라이브러리(library)</h2>
<blockquote>
<p>소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 구체적이고 명확히 정의된 자원의 모임. 라이브러리에서는 어플리케이션 개발 흐름의 주도권이 나에게 있음. 예를 들어 내가 만든 집(프로그램)이 이미 있고 이케아(IKEA)라는 라이브러리에 가서 내 집을 꾸밀 도구들을 사 와서 꾸미는 것</p>
</blockquote>
<h2 id="프레임워크framework">프레임워크(framework)</h2>
<blockquote>
<p>복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조 또는 뼈대(skeleton). 프레임워크에서는 프로그램 개발 흐름의 주도권이 내가 아닌 프레임워크에 있음. 나는 이미 구현된 프레임워크 안에서 내가 만든 소스를 조립해 더하는 것</p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>