[ React ] ๊ฐ์ ๋ ๋๋ง
if (params.data.stgyField === 'attribute') {
const temp = selectorDetailList2;
for (let i = 0; i < temp.length; i += 1) {
if (temp[i].stgyField === 'value' || temp[i].stgyField === 'minValue' || temp[i].stgyField === 'maxValue') {
temp[i].stgyValue = '';
}
}
setSelectorDetailList2([]);
setSelectorDetailList2(temp);
}
setSelectorDetailList2([]); ์ด ๋ถ๋ถ์ ์ ๋ ฅํ์ง ์์ผ๋ฉด ๊ทธ๋ฆฌ๋๊ฐ ๋ฐ๋ก ๋ฐ๋์ง ์๋๋ผ๊ณ . ์ ๊ทธ๋ด๊น?
`setSelectorDetailList2([])`๋ฅผ ํธ์ถํ๋ ์ด์ ๋ React์ ์ํ(state)๋ฅผ ์
๋ฐ์ดํธํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ๊ณ , ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ UI์ ๋ฐ์ํ๊ธฐ ์ํจ์
๋๋ค. React๋ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํด๋น ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๊ทธ๋ฆฌ๊ณ ์
๋ฐ์ดํธ๋ ๋ด์ฉ์ ํ๋ฉด์ ํ์ํฉ๋๋ค.
`setSelectorDetailList2([])`๋ฅผ ํธ์ถํ์ง ์๊ณ `setSelectorDetailList2(temp)`๋ง ํธ์ถํ๋ ๊ฒฝ์ฐ, React๋ `temp` ๊ฐ์ฒด์ ๋ณ๊ฒฝ์ ๊ฐ์งํ์ง ๋ชปํ๊ณ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ์ง ์์ต๋๋ค. ์ด๋ React์ ์ํ ์
๋ฐ์ดํธ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
React์์ ์ํ๋ฅผ ์
๋ฐ์ดํธํ ๋, ์ํ๋ ๋ถ๋ณ์ฑ(immutability)์ ์ ์งํด์ผ ํฉ๋๋ค. `temp` ๊ฐ์ฒด๋ฅผ ์์ ํ๋๋ผ๋ ๊ฐ์ฒด ์์ฒด์ ์ฐธ์กฐ๋ ๋ณ๊ฒฝ๋์ง ์๊ธฐ ๋๋ฌธ์ React๋ ์ด๋ฅผ ๋ณ๊ฒฝ์ผ๋ก ์ธ์ํ์ง ๋ชปํ๊ณ ๋ ๋๋ง์ ์คํตํฉ๋๋ค. ๋ฐ๋ผ์, `setSelectorDetailList2([])`๋ฅผ ํธ์ถํ์ฌ ์๋ก์ด ์ํ๋ฅผ ์ ๋ฌํจ์ผ๋ก์จ React์๊ฒ ๋ณ๊ฒฝ์ ์๋ฆฌ๊ณ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ ์ ์๊ฒ ํฉ๋๋ค.
๋ฐ๋ผ์, `setSelectorDetailList2([])`๋ฅผ ํธ์ถํ์ง ์๋๋ค๋ฉด ๊ทธ๋ฆฌ๋๊ฐ ๋ฐ๋ก ๋ณ๊ฒฝ๋์ง ์๋ ์ด์ ๋ React์ ์ํ ์
๋ฐ์ดํธ ๋ฉ์ปค๋์ฆ๊ณผ ๋ถ๋ณ์ฑ์ ์ ์งํด์ผ ํ๋ ๊ท์น ๋๋ฌธ์
๋๋ค.
* ์ฐธ๊ณ ํ ๊ฒ
[React] ์ปดํฌ๋ํธ ๊ฐ์ Re-renderํ๊ธฐ (re-render ์๋ฆฌ์ ๋ํ ์ดํด)
์๊ธ: How and when to force a React component to re-render (์ฃผ์โ ์์ญ ๋ค์ ์กด์ฌ) ๋ฆฌ์กํธ๋ ๋ณดํต ์๋์ ์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋ํ๋ค. ํ์ง๋ง ๊ฐ์ ์ ์ผ๋ก ๋ฆฌ์กํธ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋ํ๋๋ก ํ๊ธฐ ์ํด์๋
db2dev.tistory.com