React onClick์— ํ•จ์ˆ˜ ๋„˜๊ธธ ๋•Œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฒ˜๋ฆฌ
728x90

Today, What I learned?

redux์™€ styled-components, react-router-dom์„ ์ด์šฉํ•ด์„œ ์ข€ ๋” ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ์ค‘!..

์ด์ „๋ณด๋‹ค ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ข€ ๋” ์„ธ๋ถ„ํ™” ํ•˜๋‹ค๋ณด๋‹ˆ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋„ ๋ถ„๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌ๋˜๋Š” ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋“ค์„ ์–ด๋–ป๊ฒŒ ์‹คํ–‰์‹œํ‚ฌ ๊ฒƒ์ด๋ƒ!.. ์˜€๋Š”๋ฐ...

๋ฆฌ์•กํŠธ์—์„œ onClick ์ด๋ฒคํŠธ์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ๋„˜๊ฒจ์ค„ ๊ฒƒ์ธ์ง€๋ฅผ ์•Œ๊ฒŒ ๋œ ๊ณผ์ •์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

 

 

๊ธฐ์กด์˜ ์ฝ”๋“œ

type์— ๋”ฐ๋ผ์„œ props๋กœ ๋ฐ›์•„์˜จ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋“ค์„ ์‹คํ–‰์‹œํ‚ค๋„๋ก ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.

์ €๊ธฐ๊นŒ์ง„ ์ข‹์•˜๋Š”๋ฐ, ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋จ์— ๋”ฐ๋ผ ํƒ€์ž…์ด ์ถ”๊ฐ€๋˜๋‹ค ๋ณด๋‹ˆ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋กœ๋Š” ๋ฒ„๊ฑฐ์šด ์ƒํ™ฉ์ด ๋ฐœ์ƒ..

 

 

์ด๊ฒŒ ์ตœ์„ ์ผ๋ฆฌ๊ฐ€ ์—†์–ด

๊ณ„์† ์ด๋ ‡๊ฒŒ? ์ค„์ค„์ด ์†Œ์„ธ์ง€์ฒ˜๋Ÿผ? ๊ฐ„๋‹ค๊ณ ? 

์ด๋ ‡๊ฒŒ ์“ฐ๋Š” ๊ฒƒ์€ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์“ฐ๋Š” ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๋Š” ๋Š๋‚Œ๊ณผ..

์ด๊ฑด ์ข€ ์•„๋‹ˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ํ•จ์ˆ˜๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ๋กœ ๊ฒฐ์ •...

 

 

 

์ˆ˜์ •ํ•œ ์ฝ”๋“œ

ํด๋ฆญ์‹œ type์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ type์— ํ•ด๋‹นํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” onClickHandler๋ฅผ ๋งŒ๋“ค์–ด์„œ onClick ์ด๋ฒคํŠธ์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

 

์‹คํ–‰ํ•ด๋ณด๋‹ˆ?... ํด๋ฆญ๋„ ํ•˜๊ธฐ ์ „์— ๋ฌดํ•œ ์‚ญ์ œ ์ปจํŽŒ ์ฐฝ์˜ ๋Šช์— ๋น ์ ธ๋ฒ„๋ ธ๋‹ค.. ๐Ÿ˜‡

ํ™•์ธ์„ ๋ˆŒ๋Ÿฌ๋„ ์ปจํŽŒ์ฐฝ์ด ๊ณ„์† ๋œจ๋ฉฐ ์„œ๋ฒ„๋ฅผ ์ข…๋ฃŒํ•ด์•ผ ํ•˜๋Š” ์Šฌํ”ˆ ์ผ์ด ๋ฐœ์ƒํ–ˆ๋‹ค. 

 

 

์™œ ์ด๋ ‡๊ฒŒ ๋˜์—ˆ๋‚˜์š”?

onClick ์ด๋ฒคํŠธ์— ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋ฉด onClick={handler()} ๋ Œ๋”๋ง๋˜๋Š” ์‹œ์ ์—์„œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

์•„๋ž˜ ๊ฐ™์€ ์ˆœ์„œ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

handler();
<button></button>

 

์ฆ‰ ์ด๋ฒคํŠธ ํ˜ธ์ถœ ์‹œ ๋™์ž‘ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ Œ๋”๋ง ๋˜๋Š” ์‹œ์ ์—์„œ ํ˜ธ์ถœํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปจํŽŒ ์ฐฝ์ด ๋œจ๋Š” ๊ฒƒ!..
()์—†์ด ์ „๋‹ฌํ•ด์•ผ ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹.

 <Input type="text" placeholder="์ œ๋ชฉ" id="title" value={title} onChange={changeTitleHandler} />

 

JSX์—์„œ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ด๋ฒคํŠธ ๊ฐ์ฒด๊ฐ€ ์ฒซ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ์ด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ์œ„์™€ ๊ฐ™์ด onChange์— ์•„๋ฌด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์–ด๋„, ์•„๋ž˜์ฒ˜๋Ÿผ ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  const changeTitleHandler = (event) => {
    setTitle(event.target.value);
  };

 

๊ทธ๋Ÿผ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ์ „๋‹ฌํ•˜๋ƒ!...
๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ต๋ช… ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ์„œ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
์ต๋ช… ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ถ€๋ถ„์—์„œ ์ „๋‹ฌํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ธฐ๋Š” ๋ฐฉ์‹์ด๋‹ค.
๊ทธ๋ž˜์„œ ์ตœ์ข… ์ˆ˜์ •ํ•œ ์ฝ”๋“œ..

 

 

 

์ตœ์ข… ์ˆ˜์ •ํ•œ ์ฝ”๋“œ

์ต๋ช… ํ•จ์ˆ˜๋กœ ๋”ฐ๋กœ ๋นผ๋‚ธ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ์—ˆ๋”๋‹ˆ ๋ชจ๋“  ๊ธฐ๋Šฅ ์ •์ƒ์ž‘๋™!~

 

 

 

์ด๋ฒคํŠธ ๊ฐ์ฒด ์™ธ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„˜๊ฒจ์ฃผ๋ ค๋ฉด ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์จ์•ผ ํ•˜๋Š”๊ตฌ๋‚˜.. ๋ฅผ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค.

์—ฌ์ฐจ์ €์ฐจ ์ƒˆ๋กœ์šด ํˆฌ๋‘๋ฆฌ์ŠคํŠธ๋ฅผ ์™„์„ฑํ–ˆ์œผ๋‹ˆ ๋‚ด์ผ์€ ๋˜ ์ •๋ฆฌ๋ฅผ ํ•œ๋ฒˆ ํ•ด๋ด์•ผ๊ฒ ๋‹ค!!..

 

 

 

728x90