<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>winter_rain.log</title>
        <link>https://velog.io/</link>
        <description>머리는차갑게가슴은뜨겁게</description>
        <lastBuildDate>Wed, 01 Sep 2021 06:58:04 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>winter_rain.log</title>
            <url>https://images.velog.io/images/winter_rain/profile/6bd18b74-80c2-4c1c-afcb-7586613236c1/bg-03.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. winter_rain.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/winter_rain" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[컴포넌트에 값 전달하기]]></title>
            <link>https://velog.io/@winter_rain/%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8%EC%97%90-%EA%B0%92-%EC%A0%84%EB%8B%AC%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@winter_rain/%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8%EC%97%90-%EA%B0%92-%EC%A0%84%EB%8B%AC%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 01 Sep 2021 06:58:04 GMT</pubDate>
            <description><![CDATA[<h3 id="1-값을-주고-받는-것">1. 값을 주고 받는 것</h3>
<h4 id="props">props</h4>
<p>시작은 역시 hello 로 진행.</p>
<p>App.js</p>
<pre><code>import React from &#39;react&#39;;
import Hello from &#39;./Hello&#39;;

function App() {
  return (
    &lt;Hello name=&quot;react&quot; /&gt;
  );
}

export default App;</code></pre><p>페이지 상단에서 <code>Hello</code> 컴포넌트를 <code>import</code> 하고 
하단 <code>function</code> 블럭에서 해당 컴포넌트를 리턴하고 있음.
당연히 정확한 경로에 다음 컴포넌트 작성 필요.</p>
<p>Hello.js</p>
<pre><code>import React from &#39;react&#39;;

function Hello(props) {
  return &lt;div&gt;안녕하세요 {props.name}&lt;/div&gt;
}

export default Hello;</code></pre><p>App.js 에서 Hello 컴포넌트를 호출할 때 <code>name=react</code> 를 정의하였으므로, 해당 값을 컴포넌트에서 사용할 수 있게 돕는 것이
바로 <code>props</code> 임.</p>
<h4 id="여러개를-해야하는데">여러개를 해야하는데...</h4>
<p>App.js </p>
<pre><code>import React from &#39;react&#39;;
import Hello from &#39;./Hello&#39;;

function App() {
  return (
    &lt;Hello name=&quot;react&quot; color=&quot;red&quot;/&gt;
  );
}

export default App;</code></pre><p>컴포넌트에 호출 시에 <code>color</code> 값을 추가 한다면</p>
<p>Hello.js</p>
<pre><code>import React from &#39;react&#39;;

function Hello(props) {
  return &lt;div style={{ color: props.color }}&gt;안녕하세요 {props.name}&lt;/div&gt;
}

export default Hello;</code></pre><p>이렇게 색정보도 받아서 적용하면 됨.
여기서 <code>props.color, props.name</code> 이렇게 작성하는 것 보다는
비구조화 할당을 이용해서 <code>{ color, name } = props</code> 이므로
다음과 같이 하면됨.</p>
<pre><code>import React from &#39;react&#39;;

function Hello({ color, name }) {
  return &lt;div style={{ color }}&gt;안녕하세요 {name}&lt;/div&gt;
}

export default Hello;</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[다음으로 넘어가기 전에...]]></title>
            <link>https://velog.io/@winter_rain/%EB%8B%A4%EC%9D%8C%EC%9C%BC%EB%A1%9C-%EB%84%98%EC%96%B4%EA%B0%80%EA%B8%B0-%EC%A0%84%EC%97%90</link>
            <guid>https://velog.io/@winter_rain/%EB%8B%A4%EC%9D%8C%EC%9C%BC%EB%A1%9C-%EB%84%98%EC%96%B4%EA%B0%80%EA%B8%B0-%EC%A0%84%EC%97%90</guid>
            <pubDate>Wed, 16 Jun 2021 02:20:51 GMT</pubDate>
            <description><![CDATA[<h3 id="1-일단-알고가야-할-것">1. 일단 알고가야 할 것</h3>
<blockquote>
<p>ES6 문법
JSX </p>
</blockquote>
<h3 id="2-es6">2. ES6</h3>
<h4 id="화살표-함수">화살표 함수</h4>
<pre><code>const add = (a, b) =&gt; {
  return a + b;
};

console.log(add(1, 2));</code></pre><p><code>function</code> 키워드를 대신해서 화살표 사용
여기에서 또 축약이 있음. 
위의 함수는 정확하게 다음과 동일.</p>
<pre><code>const add = (a, b) =&gt; a + b;
console.log(add(1, 2));</code></pre><p>여러줄로 구성되지 않고 바로 리턴되는 단순 함수이기 때문에 축약할 수 있음.</p>
<pre><code>const add = (a, b) =&gt; {
  if(a &gt; 8){
    //some...
    a = 8;
  }
  return a + b;
};

console.log(add(1, 2));</code></pre><p>위와 같이 여러줄이면 코드 블록으로 정의해야됨.</p>
<h4 id="비구조화-할당">비구조화 할당</h4>
<pre><code>const object = { a: 1, b: 2 };

//object 안의 a, b 를 출력한다고 한다면...

//일반적으로 변수에 배치...
let a = object.a;
let b = object.b;

//또는 다음과 같이 비구조화 할당 사용..
const { a, b } = object;

console.log(a); // 1
console.log(b); // 2</code></pre><p>음... 끝.</p>
<pre><code>const object = { a: 1, b: 2 };

function print({ a, b }) {
  console.log(a);
  console.log(b);
}

print(object);</code></pre><p>함수의 파라미터에도 비구조화 할당이 가능.</p>
<pre><code>const object = { a: 1 };

function print({ a, b = 2 }) {
  console.log(a);
  console.log(b);
}

print(object);</code></pre><p>이렇게도 됨.</p>
<pre><code>const object = { a: 1 };

const { a, b = 2 } = object;

console.log(a); // 1
console.log(b); // 2</code></pre><p>이렇게도 되고...</p>
<pre><code>const array = [1, 2];
const [one, two] = array;

console.log(one);
console.log(two);</code></pre><p>오브젝트 외에 배열도 가능.</p>
<pre><code>const deepObject = {
  state: {
    information: {
      name: &#39;velopert&#39;,
      languages: [&#39;korean&#39;, &#39;english&#39;, &#39;chinese&#39;]
    }
  },
  value: 5
};

const { name, languages } = deepObject.state.information;
const { value } = deepObject;

const extracted = {
  name,
  languages,
  value
};</code></pre><p>오브젝트나 배열값이 깊숙한 경우에는 이렇게... 비구조화 할당을 2번 사용해서 추출함.</p>
<h4 id="spread">spread</h4>
<pre><code>const slime = {
  name: &#39;슬라임&#39;
};

const cuteSlime = {
  ...slime,
  attribute: &#39;cute&#39;
};

const purpleCuteSlime = {
  ...cuteSlime,
  color: &#39;purple&#39;
};

console.log(slime);// {name:&#39;슬라임&#39;}
console.log(cuteSlime);// {name:&#39;슬라임&#39;,attribute:&#39;cute&#39;}
console.log(purpleCuteSlime);//{name:&#39;슬라임&#39;,attribute:&#39;cute&#39;,color:&#39;purple&#39;}</code></pre><p>음... 이정도 예제면...</p>
<pre><code>const animals = [&#39;개&#39;, &#39;고양이&#39;, &#39;참새&#39;];
const anotherAnimals = [...animals, &#39;비둘기&#39;];
console.log(animals);//[&#39;개&#39;, &#39;고양이&#39;, &#39;참새&#39;]
console.log(anotherAnimals);//[&#39;개&#39;, &#39;고양이&#39;, &#39;참새&#39;,&#39;비둘기&#39;]</code></pre><p>배열도 가능. </p>
<h4 id="rest">rest</h4>
<pre><code>const purpleCuteSlime = {
  name: &#39;슬라임&#39;,
  attribute: &#39;cute&#39;,
  color: &#39;purple&#39;
};

const { color, ...rest } = purpleCuteSlime;
console.log(color);//purple
console.log(rest);//{name:&#39;슬라임&#39;,attribute:&#39;cute&#39;}</code></pre><p>형태가 <code>...</code> 으로 비슷해서 헷갈림.
주요한 부분은 <code>const {color, ...rest}</code> 이 부분임.
뒤쪽 변수명이 반드시 <code>rest</code> 이어야 하는 것은 아님.</p>
<pre><code>const numbers = [0, 1, 2, 3, 4, 5, 6];

const [one, ...rest] = numbers;

console.log(one);//0
console.log(rest);//[1,2,3,4,5,6]</code></pre><p>역시 배열에서도 사용가능.</p>
<h3 id="jsx">JSX</h3>
<h4 id="기본규칙">기본규칙</h4>
<p><code>html</code> 과 거의 같다. 몇가지 규칙만 지키면됨.</p>
<blockquote>
<p>태그를 반드시 닫을 것.
항상 root 엘리먼트가 있어야 함.</p>
</blockquote>
<p>태그 닫기는 당연히 싱글 엘리먼트도 해당 됨.</p>
<pre><code>mport React from &#39;react&#39;;
import Hello from &#39;./Hello&#39;;

function App() {
  return (
    &lt;div&gt;
      &lt;Hello /&gt;
      &lt;Hello /&gt;
      &lt;Hello /&gt;
      &lt;input /&gt;
      &lt;br /&gt;
    &lt;/div&gt;
  );
}

export default App;</code></pre><p>최상위 root 엘리먼트는 <code>&lt;&gt;</code> 이렇게 이름없이 작성해도 됨.</p>
<pre><code>function App() {
  return (
    &lt;&gt;
      &lt;Hello /&gt;
      &lt;div&gt;안녕히계세요&lt;/div&gt;
    &lt;/&gt;
  );
}

export default App;</code></pre><h4 id="자바스크립트-값-사용">자바스크립트 값 사용</h4>
<p>JSX 내부에 자바스크립트 변수 값을 사용하려면 <code>{}</code> 로 감싸야 됨.</p>
<pre><code>import React from &#39;react&#39;;
import Hello from &#39;./Hello&#39;;

function App() {
  const name = &#39;react&#39;;
  return (
    &lt;&gt;
      &lt;Hello /&gt;
      &lt;div&gt;{name}&lt;/div&gt;
    &lt;/&gt;
  );
}

export default App;</code></pre><h4 id="style-class-적용시">style, class 적용시</h4>
<p>JSX 형식으로 style 적용하려면 <code>camelCase</code> 로 네이밍해야함. <code>background-color</code> 은 <code>backgroundColor</code> 로 작성.</p>
<pre><code>import React from &#39;react&#39;;
import Hello from &#39;./Hello&#39;;

function App() {
  const name = &#39;react&#39;;
  const style = {
    backgroundColor: &#39;black&#39;,
    color: &#39;aqua&#39;,
    fontSize: 24, // 기본 단위 px
    padding: &#39;1rem&#39; // 다른 단위 사용 시 문자열로 설정
  }

  return (
    &lt;&gt;
      &lt;Hello /&gt;
      &lt;div style={style}&gt;{name}&lt;/div&gt;
    &lt;/&gt;
  );
}

export default App;</code></pre><p>css class 를 작성할 땐 <code>class=</code> 대신에 <code>className=</code> 으로 해야됨.</p>
<pre><code>import React from &#39;react&#39;;
import Hello from &#39;./Hello&#39;;
import &#39;./App.css&#39;;


function App() {
  const name = &#39;react&#39;;
  const style = {
    backgroundColor: &#39;black&#39;,
    color: &#39;aqua&#39;,
    fontSize: 24, // 기본 단위 px
    padding: &#39;1rem&#39; // 다른 단위 사용 시 문자열로 설정
  }

  return (
    &lt;&gt;
      &lt;Hello /&gt;
      &lt;div style={style}&gt;{name}&lt;/div&gt;
      &lt;div className=&quot;gray-box&quot;&gt;&lt;/div&gt;
    &lt;/&gt;
  );
}

export default App;</code></pre><p>일단 여기까지 필요한 기본문법 정리 끝.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[나도 리액트 해볼까...]]></title>
            <link>https://velog.io/@winter_rain/%EB%82%98%EB%8F%84-%EB%A6%AC%EC%95%A1%ED%8A%B8-%ED%95%B4%EB%B3%BC%EA%B9%8C</link>
            <guid>https://velog.io/@winter_rain/%EB%82%98%EB%8F%84-%EB%A6%AC%EC%95%A1%ED%8A%B8-%ED%95%B4%EB%B3%BC%EA%B9%8C</guid>
            <pubDate>Tue, 15 Jun 2021 01:41:33 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/winter_rain/post/b5477438-8095-4851-9ea9-5b5aff6876c2/1_5X7uUtV73GjZsqMKJrMKBQ.png" alt=""></p>
<h3 id="1-필요사항">1. 필요사항</h3>
<blockquote>
<p>1) ES6 문법
2) Tool 설치
3) Mental ... 끝.</p>
</blockquote>
<h3 id="2-작업환경-준비">2. 작업환경 준비</h3>
<h4 id="nodejs">Node.js</h4>
<p>Window 버전은 <a href="https://nodejs.org/en/">nodejs.org</a> 에서 다운로드 하면됨.</p>
<p>MacOs 는 <a href="https://github.com/nvm-sh/nvm">nvm</a> 으로 설치하면됨.</p>
<pre><code>$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
$ nvm install --lts</code></pre><h4 id="yarn">Yarn</h4>
<p>yarn 공식페이지 <a href="https://yarnpkg.com/en/docs/install">yarn install</a> 참고하면됨.</p>
<h4 id="vs-code">VS Code</h4>
<p>vs code <a href="https://code.visualstudio.com/">VS Code 공식 홈페이지</a> 참고하면됨.</p>
<h3 id="3-시작">3. 시작</h3>
<p>VS Code 에서 Terminal &gt; New Terminal (Ctrl + Shift + `) 터미널 실행.</p>
<pre><code>$ npx create-react-app start-app</code></pre><p>CLI 로 start-app 생성. 생성한 <code>start-app</code> 디렉터리에 들어가서 <code>yarn start</code> 입력.</p>
<pre><code>$ cd start-app
$ yarn start</code></pre><p>잠시 기다리면 <code>http://localhost:3000/</code> 으로 페이지가 열림.</p>
<p>우선 여기까지 작업준비 끝.</p>
]]></description>
        </item>
    </channel>
</rss>