[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
๋ฐ์ํ
'Front-End ์์ ์ค > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] ๊ธฐ์ด ๊ฐ๋ ์ ๋ฆฌ - ๊ธฐ๋ณธ ํ๊ฒฝ ๊ตฌ์ฑ (0) | 2022.03.07 |
---|---|
[React] Router Dom (0) | 2021.10.09 |
[Reacte] Component Event ๋ง๋ค๊ธฐ (0) | 2021.10.02 |
[Reacte] Event setState ํจ์ (0) | 2021.10.02 |
[React] ์ด๋ฒคํธ state props ๊ทธ๋ฆฌ๊ณ render ํจ์ ๊ฐ์ (0) | 2021.10.02 |