FRONTEND/React
60
![list_img](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh1HZf%2Fbtr9DUwyssu%2FEx11mgkgZ6ks7s85ubXoc0%2Fimg.png)
[React+Css] ํญ ๋ง๋ค๊ธฐ (+ styled-components)
2023.04.12
์ฐธ๊ณ . app.js์์ ๋ฐ๋ก ๊ทธ๋ฅ ํ
์คํธ ํ๊ณ ์์ ๊ธฐ๋ณธ. ๋์์ธ ์ ๋จน์ธ ๋ฒ์ import './App.css'; import React, {useState} from 'react'; function App() { const [currentTab, setCurrentTab] = useState(0); // ํ
์คํธ๋๊น ๋ฐฐ์ด๋ก ๊ด๋ฆฌํด๋ณผ๊ฒ์ const menuArr = [ {name: 'Tab1', content:'์ฒซ๋ฒ์งธ ํญ์ด์์ ๐ผ'}, {name: 'Tab2', content:'๋๋ฒ์งธ ํญ์ด์์ ๐'}, {name: 'Tab3', content:'์ธ๋ฒ์งธ ํญ์ธ๋ฐ์ ๐'} ] // ํญ ๋ด์ฉ ๋ฃ์ด์ค๊ฑฐ์์ const selectMenuHandler = (index) => { setCurrentTab(index);..
![list_img](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXMdyY%2Fbtr9AsA42MV%2F0LTEv3Cx7nS4qDyMjNHkv1%2Fimg.png)
[javascript] JS๋ก Linked List ๊ตฌํ
2023.04.12
1. ๊ทธ๋ฅ ์ฝ๋์์ ๋ฐ๋ผ์ค ๋ /** ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ธ ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Single Linked List) ๋ฅผ ๋ง๋ค์ด๋ณผ๊ฒ์ */ // ๋
ธ๋ ๊ฐ์ฒด ์์ฑ var Node = function(data) { // ๋ฐ์ดํฐ์ ๋ค์ ๋
ธ๋์ ์ฃผ์์ง๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํจ this.data = data; this.nextNode = null; } // Head ์ง์ var Head = null; // ์ฒซ๋ฒ์งธ ๋
ธ๋ ๋ง๋ค์ var Node1st = new Node("๊น๋ฉ๋ฉ๐ถ"); // Head์ ์ฒซ๋ฒ์งธ ๋
ธ๋ ์ฐธ์กฐ head = Node1st; // ๋๋ฒ์งธ ๋
ธ๋ ๋ง๋ค์ var Node2nd = new Node("์ด๋ฅ๋ฅ๐ฑ") // ์ฒซ๋ฒ์งธ ๋
ธ๋์ ๋ค์ ๋
ธ๋ ์ฃผ์์ง ๊ฐ์ผ๋ก ๋๋ฒ์งธ ๋
ธ๋๋ฅผ ์ฐธ์กฐ Node1st.nextNode =..
![list_img](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsAigZ%2Fbtr9ywCz9od%2FyakH8kC3TpYf3nv0vLGFdK%2Fimg.png)
[React] localstorage (feat. login / ์์ )
2023.04.11
๊ฒ์ํ์ ๋ง๋๋ ค๊ณ ํ๋ค๋ณด๋ฉด ํผํ ์ ์๋ ๊ธฐ๋ฅ ์ค ํ๋์ธ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ. localstorage๋ฅผ ์ฌ์ฉํด์ login์ ๊ตฌํํด๋ณด๋ ค๊ณ ํ๋ค. ๋จผ์ localstorage๋? ๋ธ๋ผ์ฐ์ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ ์ฌ์ฉํ๋ ๊ฒ ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์ญ์ ์ ๊ทผ ๊ฐ๋ฅ ๋ธ๋ผ์ฐ์ ์์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ ์ฌ์ฉํ๋ LocalStorage ์ SessionStorage ์ ๊ธฐ๋ฅ์ ์ฐจ์ด๋ ๋ญ๋ฐ ? Session Storage๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข
๋ฃํ๋ฉด ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ ํ๋ฐ์ฑ ์ ์ฅ๊ณต๊ฐ Local Storage๋ ๋ธ๋ผ์ฐ์ ์ฒญ์๋ฅผ ํ์ง ์๋ ์ด์ ์ฌ๋ผ์ง์ง ์๋ ์ ์ฅ๊ณต๊ฐ ๋๊ฐ ๋ค ๊ฐ๊ฐ 5MB ์ ๋์ text๋ฅผ ์ ์ฅํ ์ ์๋ค๊ณ ํ๋ ์ฌ์ฉํ ๋ ์ฐธ๊ณ ํด์ ์ ์ ํ ์์ด ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ๐ฅ How to Use? setItem(ke..
![list_img](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmh1Ps%2Fbtr9sgfMCkd%2FwwFJvnFnb3gFnvUGYI3A20%2Fimg.png)
[React ERROR] Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?
2023.04.11
๋ฆฌ์กํธ ํ๋ก ํธ์ ๊ด๋ จํ ๊ฐ๋จ ์๋ฌ ํด๊ฒฐ .. ๋ฐฉ๋ฒ์ ์ฌ์ฐ๋ ์ ๋ง ์์์น๋ ๋ชปํ ๊ณณ์์ ๊ณ ์ฌ ์๋๋ผ ์๊ฐ ์ค๋ ๋บ๊น ๐ฆ ์๋ฌ ๋ฉ์ธ์ง Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment ...? ๐ฆ ๋ฐ์ ์์ธ ๋ฆฌ์กํธ ํ๋ก ํธ์ ๊ด๋ จํ ๊ฐ๋จ ์๋ฌ ํด๊ฒฐ .. ๋ฐฉ๋ฒ์ ์ฌ์ฐ๋ ์ ๋ง ์์์น๋ ๋ชปํ ๊ณณ์์ ๊ณ ์ฌ ์๋๋ผ ์๊ฐ ์ค๋ ๋บ๊น ๐ฆ ์๋ฌ ๋ฉ์ธ์ง Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment ...? ๐ฆ ๋ฐ์ ์์ธ JSX ์ฌ์ฉ ์ ํ๋์ ํ๊ทธ๋ก ๋ฌถ์ฌ์์ด์ผ ํ๋๋ฐ.. ์ฌ๋ฌ๊ฐ์ ๋ฃจํธ ํ๊ทธ๋ฅผ ๊ฑธ์ด๋๊ณ ์ ๊ฟ์ TA..
![list_img](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLa2m2%2FbtrPKCovjC9%2FmpimVzLobU4wXN0wfdHmz1%2Fimg.png)
Recoil
2022.10.31
์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก Redux ๋ฅผ ๊ตฌํํ๋ค๊ฐ... ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด์ ๋ญ๊ฐ ๋ด๊ฐ ์์ ํด์ ์ฐ๊ธฐ์๋ ๊ตฌ์กฐ๊ฐ ๋๊ฒ ๋ณต์กํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๊ฑฐ๊ธฐ์๋ถํฐ ๋ ์๋ฌธ์ ์ด ์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก Redux๋ฅผ ๋ง์ด ์ฌ์ฉํ๋๊ฐ์๊ณ (๊ตฌํ ์ฉ์ด์ฑ์ ๋จ์ด์ง๋ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ฒ ์ข๋ค๋์ง ๊ทธ๋ฐ ์ฅ์ ์ด ์๋๊ฐ๋ฅผ ์์นญํ๊ธฐ ์์ํจ.. ), ๊ทธ ์ด์ ๋ ๋จ์ํ๊ฒ ๋๋ถ๋ถ์ ์ฌ์ฉ์๋ค์ด Redux๋ฅผ ์ฌ์ฉํ๋ ๋น์ฐํ ๊ธฐ์ ์ ์ต๋ํ๋ ์
์ฅ์์๋ '์ฌ์ฉ์๋ค์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ = ์ข์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํน์ ๋ฏฟ์๋งํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ'๋ผ๋ ์๊ฐ์ ํ๊ฒ ํ๊ธฐ ๋๋ฌธ์ธ ๋ฏํ๋ค. Redux๋ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋๋ฅผ ๋ง์ด ์์ฑํด์ผํ๋ ์์ฃผ ํฐ ๋จ์ ์ด ์๋๋ฐ ํ์์ ๋ฐ๋ผ Redux๋ฅผ ์ฌ์ฉํด์ผํ ์๋ ์๊ฒ ์ง๋ง, ์๋น์ค ์ฌ์ฉ๋์ด ๊ทธ๋ ๊ฒ ๊ฑฐ๋ํ์ง ์์ ํ๋ก๊ทธ..
[JavaScript] '==' ์ '===' ์ฐ์ฐ์ ์ฐจ์ด
2022.10.07
์ฐ์ JavaScript๋ ํ์
๋ณํ์ ๋ํด ์ ์ฐํ๊ฒ ๋์ํ๋ค. 1. "==" ์ฐ์ฐ์ == ์ฐ์ฐ์์ ๊ฒฝ์ฐ, ๋ ํผ ์ฐ์ฐ์์ ๊ฐ(value)๊ฐ ๋ค๋ฅผ ๊ฒฝ์ฐ ์ผ๋ถ ํผ ์ฐ์ฐ์์ ํ์
(type)์ ๋ณํํ์ฌ ๊ฐ์ ๋น๊ต. : ํ์
์ ๋น๊ตํ์ง ์๋๋ค. 10 == 10//true 10 == '10'//true true == 1//true true == '1'//true null == undefined//true 2. "===" ์ฐ์ฐ์ === ์ฐ์ฐ์์ ๊ฒฝ์ฐ ํ์
์ ๋ณํํ์ง ์๊ณ ๊ฐ์ ๋น๊ตํ๋ค. : ํ์
๊ณผ ๊ฐ์ ๋ชจ๋ ๋น๊ตํ๋ค. 10 === 10//true 10 === '10'//false true === 1//false true === 'true'//false null === undefined//false NaN === N..
![list_img](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXhNe1%2FbtrNeIxiLAM%2FqtmaV4aR1X4gstk2SnAsT0%2Fimg.png)
[๊ฐ๋ฐ๋๊ตฌ] Redux dev tools
2022.09.28
๋ฆฌ์กํธ๋ก ์น์ฑ์ ๊ฐ๋ฐํ๊ธฐ ์์ํ๊ฒ ๋๋ฉด, Redux dev tool์ ์ค์นํ๊ฒ ๋๋ค. ๊ฒ์๊ธ์ ๋ค์ด๊ฐ๊ธฐ ์์ Redux์ ๋ํ ๊ฐ๋
๋ถํฐ ์ง๊ณ ๊ฐ๋๋ก ํ๊ฒ ๋ค. โจ Redux(๋ฆฌ๋์ค๋)? JavaScript(์๋ฐ์คํฌ๋ฆฝํธ) ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, ๋ณธ์ง์ Node.js ๋ชจ๋์ด๋ค. โจ Redux์ 3๊ฐ์ง ์์น 1. Single Source of Truth - ๋์ผํ ๋ฐ์ดํฐ๋ ํญ์ ๊ฐ์ ๊ณณ์์ ๊ฐ์ง๊ณ ์จ๋ค. ์ฆ, ์คํ ์ด๋ผ๋ ํ๋๋ฟ์ธ ๋ฐ์ดํฐ ๊ณต๊ฐ์ด ์๋ค๋ ์๋ฏธ. 2. State is read-only - ๋ฆฌ์กํธ์์๋ setState ๋ฉ์๋๋ฅผ ํ์ฉํด์ผ๋ง ์ํ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅ. - ๊ฐ์ ๋งฅ๋ฝ์ผ๋ก, ๋ฆฌ๋์ค์์๋ ์ก์
(action) ์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์๋ง ์ํ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅ. 3. Changes are made with pu..
![list_img](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHNBMP%2FbtrM2rcsoiZ%2FEgQUlFbLf0mkB17qsEbQb1%2Fimg.png)
Front-End์ ์ํ ๊ด๋ฆฌ (State Management)
2022.09.26
์ํ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ํ๋ก ํธ์๋ ์ญ๋์ ํต์ฌ์ด๋ผ๋๋ฐ.. ์ฌ๊ธฐ์ ์์ฃผ ๋์ค๋ ์ฉ์ด์ธ '์ํ ๊ด๋ฆฌ'๋ ๋ฌด์์ธ๊ฐ? Front-End ์์์ '์ํ๊ด๋ฆฌ'๋? 1. ๋ฐ์ดํฐ๋ฅผ ์ค๊ณ๋ UI/UX์ ๋ง๊ฒ ์ค๊ณํ๊ณ ๊ตฌํํ๋ ์ผ์ด๋ฉฐ, 2. ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ฒ๋ก ์ ๋ฌ๋๋ client์ ์์ฒญ์ ๋ฐ๋ผ ๋ณํํ๋ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ์ผ. ์ํ๊ด๋ฆฌ ๋ฐฉ๋ฒ 1. ํ๋ ์์ํฌ ๋ฑ์ฅ - React, Vue, Svelte ๋ฑ์ ํ๋ ์์ํฌ ๋ฑ์ฅ - ์ต๊ทค๋ฌ์ ๋ฑ์ฅ์ผ๋ก ์ํ๋ ๊ณผ๊ฑฐ์ DOM์์ ํ์ถํ ์ ์๊ฒ ๋์๋ค. front-end ๊ฐ๋ฐ์๋ DOM์ด ์๋ JavaScript์์ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์๋ค. ์ฆ, DOM์ ์ ๊ทผํ๋ ๋ก์ง์ด ํ์์์ด์ง๊ฒ ๋์๋ค๋ ๊ฒ์ด๋ค. ๊ฑฐ๊ธฐ์๋ค ํ์ํ ์ํ๋ค์ controler์ ๋ชจ์์ ๊ด๋ฆฌํ..
[Javascript] Generater ์ ๋๋ ์ดํฐ ์ Iterable Obj ์ดํฐ๋ฌ๋ธ ๊ฐ์ฒด
2022.09.26
์ผ๋ฐ ํจ์๋ ํ๋์ ๊ฐ(ํน์ return ๊ฐ์ด ์์ ์๋ ์์)๋ง์ ๋ฐํ. but. ์ ๋๋ ์ดํฐ(generator)๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ํ์์ ๋ฐ๋ผ ํ๋์ฉ ๋ฐํ(yield)ํ ์ ์๊ฒ ๋๋ค. generator๊ณผ iterable ๊ฐ์ฒด๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์์ฝ๊ฒ data stream์ ๋ง๋ค ์ ์๋ค๊ณ ํจ. * ์ดํฐ๋ฌ๋ธ(iterable) - ๋ฐ๋ณต ๊ฐ๋ฅํ(iterable, ์ดํฐ๋ฌ๋ธ) ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ผ๋ฐํํ ๊ฐ์ฒด. ์ดํฐ๋ฌ๋ธ์ด๋ผ๋ ๊ฐ๋
์ ์ฌ์ฉํ๋ฉด ์ด๋ค ๊ฐ์ฒด์๋ for..of ๋ฐ๋ณต๋ฌธ์ ์ ์ฉํ ์ ์๋ค. - ๋ฐฐ์ด์ด ๋ํ์ ์ธ ์ดํฐ๋ฌ๋ธ์. ๋ฐฐ์ด ์ธ์๋ ๋ค์์ ๋ด์ฅ ๊ฐ์ฒด์ ๋ฐ๋ณต๋ ๊ฐ๋ฅ. [ ์ดํฐ๋ ์ดํฐ iterator : obj[Sysbol.iterator]์ ๊ฒฐ๊ณผ. ์ด์ด์ง๋ ๋ฐ๋ณต ๊ณผ์ ์ ์ฒ๋ฆฌํ๋ค. ] ** ์ดํฐ๋ฌ๋ธ..
![list_img](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmtOOu%2FbtrMR94nA4m%2FlKMflkEtXJJsDqAv7LhW80%2Fimg.png)
[JavaScript] Optional Changing (?.)
2022.09.23
๊ณต๋ถํ๋ค๊ฐ ?. ๋ผ๋ ์ฒจ ๋ณด๋ ๋ฌธ๋ฒ์ด ๋์์ ๊ฒ์ํ๋ ค๊ณ ํ๋๋ ?. ํค์๋๋ ๊ฒ์์ด ์๋จ.. ๊ทธ๋์ ๋ ์ฐพ์๋ณด๋ ์ด๊ฑธ Optional Changing์ด๋ผ๊ณ ํ๋ค๋๋ผ ~ ์ฐธ๊ณ ๋ก ์ด ๋ฌธ๋ฒ์ javascript.info ์ ๊ฒ์ํ๋ฉด ์ต๊ทผ์ ์ถ๊ฐ๋ ๋ฌธ๋ฒ์ด๋ผ๊ณ ๋ฐ ์ ๋์ ์ฒ์ ๋ณด๋๊ฒ ใ
ใ
๋น์ฐํจ ์ต์
๋ ์ฒด์ด๋(optional Chaining) ์ธ ?. ์ ์ฌ์ฉํ๋ฉด, ํ๋กํผํฐ๊ฐ ์๋ ์ค์ฒฉ ๊ฐ์ฒด๋ฅผ ์๋ฌ ์์ด ์์ ํ๊ฒ ์ ๊ทผํ ์ ์๋ค๊ณ ํ๋ค. ๋ฐฐ๊ฒฝ) ์ด๋ค ํ์ด์ง์ ์กด์ฌํ์ง ์๋ ์์์ ์ ๊ทผํ์ฌ ์์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. // querySelecter(...) ํธ์ถ ๊ฒฐ๊ณผ๊ฐ null์ธ ๊ฒฝ์ฐ ์๋ฌ ๋ฐ์ let html = document.querySelector('.my-element').innerHT..
![list_img](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpDQCy%2FbtrMvt1Qofw%2FBMX5qYasjyKTBXqaZHQ061%2Fimg.png)
[VSCode/React] ERROR in ./node_modules/history/index.js
2022.09.19
Module not found Error: Can't resolve 'history' in @type/history ๋ผ๋ ์ค๋ฅ๊ฐ ๋ฌ๋ค ์ด๊ฒ์ ํด๊ฒฐํด๋ณด๋๋ก ํ์. 1๋ฒ. VSCode ๊ฐ์ ๊ฒฝ์ฐ ๋ค์ค ์ธ์ด๋ฅผ ์ง์ํ๋ ํ๋ก๊ทธ๋จ์ด๋ผ ๊ธฐ๋ณธ ํจํค์ง์ ๋ํ ์ ํ ์ ๋ณด๋ฅผ typescipt์ ๊ฐ์ง๊ณ ์์ง ์๋ค๊ณ ํจ. ๊ณ ๋ก history ๊ฐ์ ๊ธฐ๋ฅ์ ํฌํจ์ด ์๋์ด์ ๋ฐ๋ก ์ค์นํด์ฃผ์ด์ผ ํ๋ค๋ ๊ฒ ๊ฐ์. = ์ฌ์ฉ์๊ฐ ์ด๋ฐ ์ธ์ด๋ฅผ ์ฐ๊ฒ ๋ค ~~ ๋ผ๋ ์ ๋ณด๋ฅผ ๋๊ฒจ์ฃผ๊ณ ์ด๋ฐ ๊ธฐ๋ฅ์ด ํ์ํด์ ํ๋ ์ผ์ข
์ ๊ณผ์ powershell ์ npm install --save history npm install react-router-dom --save ๋ฅผ ์
๋ ฅํด์ ๋๊ฐ๋ฅผ ๊น์์ค.. ๋๋ ๋๊ฐ ๋ค ๊น์์ง๋ง ๊ณ์ ๊ฐ์ ์ค๋ฅ ๋ฐ์.. ํ์ง๋ง ๋ญ๊ฐ ..
![list_img](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZLWcv%2FbtrMi5G37Ln%2FzcHYgrqYcIUyZyZ1Wlpiyk%2Fimg.png)
[VSCode/React] RFCE ?
2
2022.09.16
RFCE ๋ React Functional Component Export์ ์ฝ์๋ก visual studio code ๋ฅผ ์ฌ์ฉํ ๋ ๋น js ํ์ผ ์์์ rfce ๋ฅผ ์น๊ณ tab์ ๋๋ฅด๋ฉด ๊ธฐ๋ณธ ๊ป๋ฐ๊ธฐ๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ฝ๋๋ค์ด ๋๋กฑ~! ํ๊ณ ์๊ธด๋ค. ์ฌ์ฉ๋ฐฉ๋ฒ 1. VSCode ์์ ES7+ React/Redux/React-Native snippets ์ค์นํด์ฃผ์. https://marketplace.visualstudio.com/items?itemName=dsznajder.es7-react-js-snippets ES7+ React/Redux/React-Native snippets - Visual Studio Marketplace Extension for Visual Studio Code - Extensions for..