๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋ก ํŠธ์—”๋“œ/React

React๋ž€?

by alswlfl 2022. 7. 8.

React: ํ”„๋ก ํŠธ์•ค๋“œ ํ”„๋ ˆ์ž„ ์›Œํฌ ์ค‘ ํ•˜๋‚˜

<React ์‚ฌ์šฉํ•˜๋Š” ์ด์œ >

1. ์‹ ๊ธฐ์ˆ  ๊ฐœ๋ฐœ ์‹œ ๋ˆ„๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ , ์–ด๋””์— ์‚ฌ์šฉ๋˜๊ณ , ๊ธฐ์ˆ ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€ ํŒŒ์•…ํ•ด์•ผํ•จ -> ์ƒ์œ„ 1๋งŒ๊ฐœ์˜ ์‚ฌ์ดํŠธ๊ฐ€ ๋Œ€๋ถ€๋ถ„ React์‚ฌ์šฉํ•จ(์ธ์Šคํƒ€๊ทธ๋žจ, ํŽ˜์ด์Šค๋ถ, ๋„ทํ”Œ ๋“ฑ) 

2. ํŽ˜์ด์Šค๋ถ์ด React JS๋งŒ๋“ค์—ˆ์Œ. ๊ณ„์† React JS์— ํˆฌ์žํ•˜๊ณ  ์žˆ๊ณ  ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋” ํ•จ

3. ํฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์กด์žฌ -> Javascript์™€ ์•„์ฃผ ๊ฐ€๊นŒ์›€

โ— React Native: iOS๋‚˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์–ดํ”Œ์„ React JS ์ฝ”๋“œ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ

4. React JS๋ฅผ ํ•œ ๋ฒˆ ๋ฐฐ์šฐ๋ฉด ์—ฌ๋Ÿฌ ๊ณณ์— ์‚ฌ์šฉ๊ฐ€๋Šฅ

 

โ— ํฌ๋กœ๋ฏธ์›€: ๊ตฌ๊ธ€ ํฌ๋กฌ์ด ๋ฒ ์ด์Šค๋กœ ์‚ผ๋Š” ํ”„๋กœ์ ํŠธ(๊ฐ์ข… ๊ด‘๊ณ  ์ฐจ๋‹จ)-> ๋„ค์ด๋ฒ„ ์›จ์ผ์—์„œ ์‚ฌ์šฉ

 

javascript๊ฐ€ ์ธ๊ธฐ ์žˆ๋Š” ์ด์œ 

1. ๋ชจ๋“ ๊ณณ์—์„œ ์ธ๊ธฐ ํญ๋ฐœ์ž„ -> ๊ฑ ๊ฑฐ์˜ ๋‹ค ์‚ฌ์šฉํ•จ

2. ์ „๋ฌธ๊ฐ€๊ฐ€ ๋˜๋ฉด ์งฑ์งฑํ•œ ๋ฏธ๋ž˜ ๋ณด์žฅ(์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด ๋งŽ์Œ)

3. ๋”ฐ๋กœ ์„ค์น˜ํ•  ํ•„์š” ์—†์Œ -> ์›น์‚ฌ์ดํŠธ์— ๋‚ด์žฅ๋˜์–ด ์žˆ์Œ

4. ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ ๋‘˜ ๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

โ— ๋ฐ”๋‹๋ผjs: ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

โ— three.js: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ 3D๋ฅผ ๊ตฌํ˜„ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

โ— ml5.js: ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜๋Š” ์›น์‚ฌ์ดํŠธ ๊ตฌ์ถ•ํ•˜์—ฌ ๊ทธ ๋ชจ๋ธ ํ›ˆ๋ จ์‹œํ‚ด

 

replit.com

 

<react ๋ฐฐ์šฐ๊ธฐ ์ „ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋จผ์ € ๊ณต๋ถ€!>

โ— HTML์ด CSS์™€ JS๋ฅผ ๊ฐ€์ ธ์˜ด

 

- string: ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ชจ๋‘ ๊ธ€์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Œ์„ ๋œปํ•จ

- ์ฝ˜์†”์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ์ผ: console.log

- ๋ณ€์ˆ˜(variable): ๊ฐ’์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์œ ์ง€ํ•˜๋Š” ์—ญํ•  -> const์‚ฌ์šฉ(๋ฐ”๋€Œ์ง€ ์•Š์€ ๊ฐ’)

- camel case(๋‚™ํƒ€): veryLongVariableName -> js์—์„œ ์‚ฌ์šฉ

- snack case(๋ฑ€): very_long_variable_name  -> ํŒŒ์ด์ฌ์—์„œ ์‚ฌ์šฉ

 

** const VS let

const๋Š” constant(์ƒ์ˆ˜)๋ผ๋Š” ๊ฒƒ, ๊ฐ’์ด ๋ฐ”๋€” ์ˆ˜ ์—†์Œ

let์€ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ -> ๋ณ€์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ๋•Œ ์‚ฌ์šฉ, ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ

var: ์–ธ์ œ ์–ด๋””์„œ๋‚˜ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ(๋‹จ, ๊ทœ์น™ ์กด์žฌ: ๊ฐ’ ๋ณดํ˜ธ ๋ชปํ•จ(๋ฐ”๋€Œ๋Š”์ง€ ์•ˆ๋ฐ”๋€Œ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Œ)) -> ์ด๋Ÿฌํ•œ ๋ฌธ์ œ ๋•Œ๋ฌธ์— const์™€ let ์ถ”๊ฐ€๋จ

โ˜… const ์‚ฌ์šฉ! let์€ ๊ฐ€๋”! var๋Š” ์‚ฌ์šฉX

 

- null๊ณผ false๋Š” ๋‹ค๋ฆ„: null์€ ๋ณ€์ˆ˜ ์•ˆ์— ๊ฐ’์ด ์—†๋‹ค๋Š” ์˜๋ฏธ, false๋Š” ํ•˜๋‚˜์˜ ๊ฐ’์ž„

true: ์ผœ์ ธ ์žˆ์Œ

false: ๊บผ์ ธ์žˆ์Œ

null: ๋ณ€์ˆ˜ ์•ˆ์— ์•„๋ฌด๊ฒƒ๋„ ์—†์Œ

undefined: ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์Œ(๋ณ€์ˆ˜๋งŒ ์ƒ์„ฑํ•˜๊ณ , ๊ฐ’์„ ์ž…๋ ฅ ์•ˆํ•จ)

 

objects (๊ฐ์ฒด)

-์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ๊ธฐ

 

function (ํ•จ์ˆ˜)

- ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์บก์Аํ™”ํ•˜์—ฌ ์‹คํ–‰์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•จ

- () ํ•„์š”

- ํ•จ์ˆ˜์— ๋“ค์–ด๊ฐˆ ๋‚ด์šฉ์„ ์ค‘๊ด„ํ˜ธ๋กœ ๋ฌถ์Œ

- argument๋Š” ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์„ ์ˆ˜ ์žˆ์Œ->argument๋กœ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๊ฐ’์„ ๋ฐ›์•„์˜ด

*NaN = not a number

 

conditional (์กฐ๊ฑด๋ฌธ)

*prompt(msg, default): ์‚ฌ์šฉ์ž์—๊ฒŒ msg๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , ๊ฐ’์„ ๋„ฃ์œผ๋ผ๊ณ  ๋งํ•จ ->์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฉˆ์ถ”๊ฒŒ ํ•จ, ๋ณ„๋กœ ์•ˆ์˜ˆ์จ ->์ฆ‰ ์‚ฌ์šฉ X

- ๋ณ€์ˆ˜์˜ ํƒ€์ž… ๋ณด๋Š” ๋ฐฉ๋ฒ•: typeof ๋ณ€์ˆ˜

- string -> number : parseInt(๋ฌธ์ž์—ด)

- isNaN(argument): argument๊ฐ€ number์ธ์ง€ ํ™•์ธ

- if(condition){

}else{

}

 

**document๊ฐ€ ๋ชจ๋“  ์›นํŽ˜์ด์ง€์˜ ์‹œ์ž‘์ !!!

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ html ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ html ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•

1) html element๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ ‘๊ทผ(document์— ์žˆ๋Š” ์š”์†Œ๋“ค์„ ์ž‘์„ฑ, ๋ณ€๊ฒฝ)

 

-querySelector: ๋‹จ ํ•˜๋‚˜์˜ element๋ฅผ returnํ•ด์คŒ ->css์…€๋ ‰ํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰

 

Events

- ๋‚ด๊ฐ€ ํด๋ฆญํ•˜๋Š” ๊ฒƒ, h1์œ„๋กœ ๋งˆ์šฐ์Šค๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ, emdemd

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” event๋ฅผ listenํ•ด์•ผํ•จ!! ->addEventListener๋กœ ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ ์ถ”๊ฐ€

- ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœ!

* ๋ฆฌ์Šจํ•˜๊ณ  ์‹ถ์€ ์ด๋ฒคํŠธ ์ฐพ์„ ๋•Œ h1-web apis -mdn?

* console.dir()

 

**

1. element ์ฐพ๊ธฐ

2. event๋ฅผ listenํ•˜๊ธฐ

3. ํ•ด๋‹น event์— ๋ฐ˜์‘ํ•˜๊ธฐ

 

toggle์‚ฌ์šฉ??

 

** string๊ณผ ๋ณ€์ˆ˜๋ฅผ ๊ฐ™์ด ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•

1) + ๊ธฐํ˜ธ ์‚ฌ์šฉํ•˜๊ธฐ: "string"+๋ณ€์ˆ˜๋ช…;

2) ๋ฐฑํ‹ฑ๊ธฐํ˜ธ (`)์‚ฌ์šฉํ•˜๊ธฐ: `string ${๋ณ€์ˆ˜๋ช…} string~~~~`;    -> ๋ณ€์ˆ˜๋ช…์˜ value๊ฐ’์œผ๋กœ ๋ฐ”๋€Œ์–ด ์ถœ๋ ฅ

 

localStorage: ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‚ญ์ œํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ž‘์€ db๊ฐ™์€ api

 

interval: ๋งค๋ฒˆ ์ผ์–ด๋‚˜์•ผ ํ•˜๋Š” ๋ฌด์–ธ๊ฐ€(์‹œ๊ฐ„ ์ง€์ •) -> setInterval(ํ˜ธ์ถœํ•˜๋ ค๋Š” function์ด๋ฆ„, ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ)

> setInterval๊ณผ ๋น„์Šทํ•œ ํ•จ์ˆ˜: setTimeout

 

padStart: padding์ถ”๊ฐ€ํ•˜๊ธฐ(์•ž๋ถ€๋ถ„์—)  -> ๋ฌธ์ž์—ด.padStart(๋ฌธ์ž์—ด๊ธธ์ด,์ฑ„์šธ ๋ฌธ์ž์—ด)

padEnd: padding์ถ”๊ฐ€ํ•˜๊ธฐ(๋’ท๋ถ€๋ถ„์—) -> ๋ฌธ์ž์—ด.padEnd(๋ฌธ์ž์—ด๊ธธ์ด, ์ฑ„์šธ ๋ฌธ์ž์—ด)

 

Math์ด์šฉ

- round: ๋ฐ˜์˜ฌ๋ฆผ

- ceil: ์˜ฌ๋ฆผ

- floor: ๋‚ด๋ฆผ

- random: ๋ฌด์ž‘์œ„

 

JSON

- JSON.stringify([array]): array๋ฅผ ๊ฐ€์ง€๊ณ  ๋‹จ์ˆœํ•œ string์œผ๋กœ ๋ณ€ํ™˜

- JSON.parse(string): string์„ ๊ฐ€์ง€๋กœ js๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” array๋กœ ๋ณ€ํ™˜

 

** ์ž˜๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„:

ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๋น„์Šท

forEach((item) => console.log("this is the turn of ",item));
}
 

filter: ์ง€์šฐ๊ณ  ์‹ถ์€ item์„ array์—์„œ ์ œ์™ธํ•˜์—ฌ ๋ณด์—ฌ์คŒ

'ํ”„๋ก ํŠธ์—”๋“œ > React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

useRef  (0) 2022.11.16
๋ฆฌ์•กํŠธ Hooks  (0) 2022.11.15
์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง  (0) 2022.11.15
๋ฆฌ์•กํŠธ์˜ props  (0) 2022.11.15
React ๊ธฐ์ดˆ  (0) 2022.07.09