[Reacte] Array์™€ shouldComponentUpdate()

2021. 10. 4. 08:00ใ†Front-End ์ž‘์—…์‹ค/Vue.js

728x90
๋ฐ˜์‘ํ˜•

reacte์—์„œ ๋ฐฐ์—ด์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

// ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•

var arr = [1, 2];
arr.push(3);	// 3์„ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค€๋‹ค.

console.log(arr);				// ๊ฒฐ๊ณผ๋Š” (3) [1, 2, 3]


// ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•

var arr = [1, 2];
var result = arr.concat(3);

console.log(result)			// ๊ฒฐ๊ณผ๋Š” (3) [1, 2, 3]

console.log(arr)			// ๊ฒฐ๊ณผ๋Š” (2) [1, 2]

push๋Š” ์›๋ณธ(์›๋ž˜ ๋ฐฐ์—ด)์„ ๋ฐ”๊พธ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , concat์€ ์›๋ณธ์„ ๋ฐ”๊พธ์ง€ ์•Š๋Š” ๊ฒƒ์ด์—์š”.

๊ฒฐ๊ตญ concat์€ ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

State์—์„œ ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” push์™€ ๊ฐ™์ด ์›๋ณธ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ์“ฐ๋ฉด ์•ˆ ์ข‹์€ ๊ฒƒ์ด์—์š”.

์ด ๋•Œ๋Š” concat์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด Data๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹๋‹ต๋‹ˆ๋‹ค!

์ด์œ ๋Š” ๋‚˜์ค‘์— ์„ฑ๋Šฅ ๊ฐœ์„ [shouldComponentUpdate() ์‚ฌ์šฉ]์„ ํ•  ๋•Œ, ์›๋ณธ Data๋ฅผ ๋ฐ”๊พธ๊ฒŒ ๋˜๋ฉด ๊ต‰์žฅํžˆ ๊นŒ๋‹ค๋กœ์›Œ์ง€๋Š” ๋‹จ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ์ด์—์š”.

 

 

 

shouldComponentUpdate()๋ž€?

 

์–ด๋–ค ์ปดํฌ๋„ŒํŠธ์˜ render()๊ฐ€ ์ž์‹ ์ด ๋‹ค์‹œ ํ˜ธ์ถœ๋  ํ•„์š”๊ฐ€ ์—†์Œ์—๋„ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

 

์œ„ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด True์ด๋ฉด render๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ , False์ด๋ฉด render๋Š” ํ˜ธ์ถœ ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด์—์š”.

 

 

๋˜ํ•œ ์œ„ ํ•จ์ˆ˜๋Š” ์ƒˆ๋กญ๊ฒŒ ๋ณ€๊ฒฝ๋œ ๊ฐ’๊ณผ ์ด์ „ ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

๋‹จ, push๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์›๋ณธ Data๋ฅผ ๋ณ€๊ฒฝํ•ด ๋ฒ„๋ฆฌ๋ฉด ์ƒˆ๋กญ๊ฒŒ ๋ณ€๊ฒฝ๋œ ๊ฐ’๋งŒ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

์ด๊ฒƒ์„ ํ™œ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ์˜ data๊ฐ€ ๋ณ€๊ฒฝ ๋˜์—ˆ์„ ๋•Œ๋Š” render๊ฐ€ ํ˜ธ์ถœ๋˜๊ฒŒ ํ•˜๊ณ , ๋ณ€๊ฒฝ ๋˜์ง€ ์•Š์•˜์„ ๋•Œ๋Š” ํ˜ธ์ถœ๋˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

Array.from()		// ๊ธฐ์กด ๋ฐฐ์—ด์„ ๋ณต์ œํ•˜๋Š” ๊ธฐ๋Šฅ
๋ฐ˜์‘ํ˜•
var a = {name : 'junyharang'};
var b = Object.assign({//๋นˆ ๊ฐ์ฒด๋ฅผ ์ค˜๋„ ๋˜๊ณ , ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ค˜๋„ ๋œ๋‹ค.}, a);			// ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•  ๋•Œ ์‚ฌ์šฉ

console.log(a, b, a===b);					// ๊ฒฐ๊ณผ {name : "junyharang"}   {name : "junyharang"}    false

 

728x90
๋ฐ˜์‘ํ˜•