React: _instance๊ฐ€ _ReactInternalInstance๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  _ReactInternalInstance๊ฐ€ _instance๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2017๋…„ 01์›” 07์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: facebook/react

screen shot 2017-01-07 at 09 26 55

React์˜ setState์˜ ๋‚ด๋ถ€ ์ฝ”๋“œ ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ๋†€์•˜์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ReactCompositeComponentWrapper ๊ฐœ์ฒด๊ฐ€ ์ฐจ๋ก€๋กœ ๊ฐ™์€ (์Šคํฌ๋ฆฐ ์ƒท์˜ ์ฝ˜์†”)์„ ์ฐธ์กฐํ–ˆ๋‹ค _instance ๊ฐœ์ฒด _ReactInternalInstance๋กœ ReactCompositeComponentWrapper ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ƒ๋˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๊นŒ?

Question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

(์ด๋Š” ๋น„๊ณต๊ฐœ ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด์ด๋ฉฐ ํ–ฅํ›„ ๋ฒ„์ „์—์„œ ๋ณ€๊ฒฝ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.)

๋ชจ๋“  3 ๋Œ“๊ธ€

์˜ˆ, ์˜๋„์ ์œผ๋กœ ์ด์ค‘์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ReactCompositeComponentWrapper ๋Š” ๋‚ด๋ถ€ ์ „์šฉ์ด๋ฉฐ ์‚ฌ์šฉ์ž ์ •์˜ ๋ณตํ•ฉ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ž˜ํ•‘ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์šดํŠธ ๋  ๋•Œ ์ •์˜๋˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ReactInstanceMap ๋Š” ๊ณต์šฉ ์ธ์Šคํ„ด์Šค์˜ ๋‚ด๋ถ€ ๋ž˜ํผ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ReactInstanceMap ๋ฅผ ๋ณด๋ฉด ๋ฌธ์„œ ์ฃผ์„์— ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ReactInstanceMap ๋Š” ๊ณต์šฉ ์ƒํƒœ ์ €์žฅ ์ธ์Šคํ„ด์Šค (ํ‚ค) ๋ฐ ๋‚ด๋ถ€ ํ‘œํ˜„ (๊ฐ’)์—์„œ ๋งคํ•‘์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ณต์šฉ ๋ฉ”์„œ๋“œ๋Š” ์‚ฌ์šฉ์ž ๋Œ€๋ฉด ์ธ์Šคํ„ด์Šค๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›์•„๋“ค์ด๊ณ  ๋‹ค์‹œ ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ์— ๋งคํ•‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(์ด๋Š” ๋น„๊ณต๊ฐœ ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด์ด๋ฉฐ ํ–ฅํ›„ ๋ฒ„์ „์—์„œ ๋ณ€๊ฒฝ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.)

์„ค๋ช…ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰