Repository navigation
Add translation of hooks-effect - #205
Conversation
|
Deploy preview for ko-reactjs-org ready! Built with commit 6330b28 |
fbf65d4 to
811ea75
Compare
anthonyminyungi
left a comment
There was a problem hiding this comment.
@yumidev ๋ ์๋
ํ์ธ์.
๋ฆฌ๋ทฐ ์์ฒญํ์์ ํ๋ฒ ์ญ ์ฝ์ด๋ณด๊ณ ๊ฐ์ธ์ ์ธ ๊ฐ์์ ๋จ๊ฒจ๋ณด์์ต๋๋ค.
์ฐ์ ์ ์ฒด์ ์ผ๋ก ์ง์์ ์๊ฒ ์ ๋ฒ์ญ์ด ๋์ด ์์ด์ ๊ต์ฅํ ์ข๊ฒ ์ฝ์์ต๋๋ค.
๋ค๋ง ๋ช ๊ฐ์ง ์ฒจ์ธ๋๋ฆฌ๊ณ ์ถ์ ๊ฒ์ด ์์ด์ ๋ช ์ ์ ์ด๋ณด์์ต๋๋ค.
์ ์ ๋ฆฌ๋ทฐ๋ ์ฐธ๊ณ ์ฌํญ์ผ๋ก๋ง ๋ณด์๊ณ ํ ํธ์ผ๋ก ํ๋ฆฌ์ ๋ค์
๋ฉ์ธํ
์ด๋ ๋ถ๋ค๊ณผ ๊ด๋ฆฌ์๊ป์ ๋ฆฌ๋ทฐ๋ฅผ ํด์ฃผ์๋ฉด ๊ทธ๊ฒ์ ๋ฐ์ํ์๋ฉด์
์
ํ ๋ฆฌ๋ทฐ๋ฅผ ํ๋ฒ ๋ ํ์๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
์ ๊ฐ ํ ์จ ํ๋ ๊ณฑ์น์ผ๋ฉด์ ์ฝ์ ๊ฒ์ด ์๋๋ผ ์ ํ์น ์์ ์๋ ์๊ฒ ์ง๋ง
์ ๊ฐ ๋ฆฌ๋ทฐ์ ๋ฏธ์ฒ ๋ช
์์ ์ผ๋ก ํ์ํ์ง ๋ชปํ๊ณ ๋์น ๋ถ๋ถ๋ค๋ ๋ช ๊ฐ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. (๋์ด์ฐ๊ธฐ๋ผ๋๊ฐ.. ๋ฏธ์ธํ ๋์์ค ๋ฑ.)
์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์ด ๋ฌธ์ ๋ฒ์ญ ์์
์ ํ๋ฉด์ ๊ธฐ์กด์ ๋ฒ์ญ๋์ด ์๋ ๋ฌธ์๋ค์ ๋ง์ด ์ฐธ๊ณ ํ๋ฉด์
์๋ฏธ๋ฅผ ์ ๋ฌํ๋ ์ ์ฒด์ ์ธ ํค๊ณผ ๋์์ค์ ๋ง์ด ์ด์ ์ ๋ง์ท์๊ณ , ๊ทธ๋์ ๋ฒ์ญ ์ฐฉ์ํ ๊ธฐ๊ฐ์ ๋นํด์
(๋ฌผ๋ก ๋ค๋ฅธ ๊ฐ์ธ์ ์ธ ์ผ๋ค์ด ์๊ธด ํ์ง๋ง) ์กฐ๊ธ ๋๋ฆฌ๊ณ ์ค๋๊ฑธ๋ฆฌ์ง ์์๋ ํ๋ ์๊ฐ์ด ๋ญ๋๋ค.
์ฐ์ ์์ธํ ๋ด์ฉ๋ค์ ๋ฆฌ๋ทฐ์ ์์ง๋ง ์ด ๋ฌธ์ ๋ฒ์ญ ์ ๋ฐ์ ๊ฑธ์ณ
์ ๊ฐ ๋ง์๋๋ฆฌ๊ณ ์ถ์ ํฐ ์ค๊ธฐ๋ ์ด๋ ์ต๋๋ค.
- side effect๋ฅผ ๋ถ์์ฉ์ผ๋ก ๋ฒ์ญ ํ ๊ดํธ ์์ ์๋ฌธ์ ๋จ๊ฒจ๋์ ๊ฒ
- ์ด ๊ฒ์ ์๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
- argument๋ฅผ ์ธ์ ๋ผ๊ณ ํํํ์ ๊ฒ.
- ์ด ๋ถ๋ถ์ ๊ฐ์ธ์ ์ผ๋ก ์ธ์ ๊ฐ ๋ง๋ ํํ์ด๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค.
- ๋ด
์๋ค ์ ๊ฐ์
let's ~์ ๋ฐ ๊ฐ์ (?)๋์์ค์ ๋ฒ์ญ
- ์ด ๊ฒ์ ์กฐ๊ธ ๋ ๊ฐ์ธ์ ์ธ ์๊ฐ์ ๊ฐ๊น์ง๋ง, ๋ณด๊ฒ ์ต๋๋ค, ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ ๊ฐ์ ์์ ๋์์ค๊ฐ ๋ ๋งค๋๋ฝ๋ค๊ณ ์๊ฐ๋ฉ๋๋ค.
๋๊ฐ ์ด์ ๋์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค๋ฅธ ๋ฌธ์์ ๋นํด์ ๋งค์ฐ ๊ธด ํธ์ ์ํ๋๋ฐ, ๋ฒ์ญํ์๋๋ผ ์ ๋ง ๊ณ ์ํ์
จ์ต๋๋ค.
์ ๋ ์ฒ์ ์ด ๋ฌธ์ ๋ฒ์ญ์ ์ฐฉ์ํ๋ฉด์ ๋ง๋งํ ๋๋์ด ์กฐ๊ธ ๋ค์์๊ฑฐ๋ ์... ใ
ใ
๊ณง ๋จธ์ง๋์ด react.org ์์ ๋ฐ์๋ ๋ฌธ์๋ก ๋ง๋ ์ ์๊ธธ ๊ธฐ๋ํ๊ฒ ์ต๋๋ค!
|
|
||
| Now let's see how we can do the same with the `useEffect` Hook. | ||
| ์ด์ `useEffect` Hook์์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ๋ด ์๋ค. | ||
|
|
||
| ### Example Using Hooks {#example-using-hooks} | ||
| ### Hook์ ์ด์ฉํ๋ ์์ {#example-using-hooks} | ||
|
|
||
| We've already seen this example at the top of this page, but let's take a closer look at it: | ||
| ์๋์ ์ฝ๋๋ ์์์ ์ด๋ฏธ ๋ณด์๋ ๊ฒ์ด์ง๋ง ์ด๋ฒ์ ์ข ๋ ์์ธํ ๋ค์ฌ๋ค๋ด ์๋ค. | ||
|
|
There was a problem hiding this comment.
์ ๋ ๋ฒ์ญ ์์
์ ํ๋ฉด์ ๊ธฐ์กด์ ๋ฒ์ญ๋์ด์๋ ๋ฌธ์๋ค์ ๋์์ค๋ฅผ ๋ง์ด ์ฐธ๊ณ ํ์ต๋๋ค.
let's see ~ ํน์ let's take a look ~๊ณผ ๊ฐ์ ๋๋์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํน์ ๋ณด๊ฒ ์ต๋๋ค. ์ ๊ฐ์ ๋์์ค๋ก ์์ฑํ์์ต๋๋ค.
| componentDidUpdate(prevProps) { | ||
| // Unsubscribe from the previous friend.id | ||
| // ์ด์ friend.id์์ ๊ตฌ๋ ์ ํด์งํ๋ค. | ||
| ChatAPI.unsubscribeFromFriendStatus( | ||
| prevProps.friend.id, | ||
| this.handleStatusChange | ||
| ); | ||
| // Subscribe to the next friend.id | ||
| // ๋ค์ friend.id๋ฅผ ๊ตฌ๋ ํ๋ค | ||
| ChatAPI.subscribeToFriendStatus( |
There was a problem hiding this comment.
์ด ๋ถ๋ถ๋ ์กด๋๋ง ๋์์ค๊ฐ ๋ค์ด๊ฐ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
| **`useEffect`๊ฐ ํ๋ ์ผ์ ๋ฌด์์ธ๊ฐ์?** useEffect Hook์ ์ด์ฉํ์ฌ ์ฐ๋ฆฌ๋ ๋ฆฌ์กํธ์๊ฒ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ์ดํ์ ์ด๋ค ์ผ์ ์ํํด์ผํ๋ ์ง๋ฅผ ๋งํฉ๋๋ค. ๋ฆฌ์กํธ๋ ์ฐ๋ฆฌ๊ฐ ๋๊ธด ํจ์๋ฅผ ๊ธฐ์ตํ๋ค๊ฐ(์ด ํจ์๋ฅผ โeffectโ๋ผ๊ณ ๋ถ๋ฆ ๋๋ค) DOM ์ ๋ฐ์ดํธ๋ฅผ ์ํํ ์ดํ์ ๋ถ๋ฌ๋ผ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด effect๋ฅผ ํตํด ๋ฌธ์ ํ์ดํ์ ์ง์ ํ์ง๋ง ์ด ์ธ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ค๋ฅธ ๋ช ๋ นํ(imperative) API๋ฅผ ๋ถ๋ฌ๋ด๋ ์ผ๋ ํ ์ ์์ต๋๋ค. | ||
|
|
||
| **Why is `useEffect` called inside a component?** Placing `useEffect` inside the component lets us access the `count` state variable (or any props) right from the effect. We don't need a special API to read it -- it's already in the function scope. Hooks embrace JavaScript closures and avoid introducing React-specific APIs where JavaScript already provides a solution. | ||
| **`useEffect`๋ฅผ ์ปดํฌ๋ํธ ์์์ ๋ถ๋ฌ๋ด๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?** `useEffect`๋ฅผ ์ปดํฌ๋ํธ ๋ด๋ถ์ ๋ ์ผ๋ก์จ effect๋ฅผ ํตํด `count` state ๋ณ์(๋๋ ๊ทธ ์ด๋ค prop์๋)์ ์ ๊ทผํ ์ ์๊ฒ ๋ฉ๋๋ค. ํจ์ ๋ฒ์ ์์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํน๋ณํ API ์์ด๋ ๊ฐ์ ์ป์ ์ ์๋ ๊ฒ์ ๋๋ค. Hook์ ์๋ฐ์คํฌ๋ฆฝํธ์ ํด๋ก์ ๋ฅผ ์ด์ฉํ์ฌ ๋ฆฌ์กํธ์ ํ์ ๋ API๋ฅผ ๊ณ ์ํ๋ ๊ฒ๋ณด๋ค ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ๋ฐฉ๋ฒ์ ์ด์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. | ||
|
|
||
| **Does `useEffect` run after every render?** Yes! By default, it runs both after the first render *and* after every update. (We will later talk about [how to customize this](#tip-optimizing-performance-by-skipping-effects).) Instead of thinking in terms of "mounting" and "updating", you might find it easier to think that effects happen "after render". React guarantees the DOM has been updated by the time it runs the effects. | ||
| **`useEffect`๋ ๋ ๋๋ง ์ดํ์ ๋งค๋ฒ ์ํ๋๋ ๊ฑด๊ฐ์?** ๋ค, ๊ธฐ๋ณธ์ ์ผ๋ก ์ฒซ๋ฒ์งธ ๋ ๋๋ง*๊ณผ* ์ดํ์ ๋ชจ๋ ์ ๋ฐ์ดํธ์์ ์ํ๋ฉ๋๋ค.(๋์ค์ [effect๋ฅผ ํ์์ ๋ง๊ฒ ์์ ํ๋ ๋ฐฉ๋ฒ](#tip-optimizing-performance-by-skipping-effects)์ ๋ํด ๋ค๋ฃฐ ๊ฒ์ ๋๋ค.) ๋ง์ดํ ๊ณผ ์ ๋ฐ์ดํธ๋ผ๋ ๋ฐฉ์์ผ๋ก ์๊ฐํ๋ ๋์ effect๋ฅผ ๋ ๋๋ง ์ดํ์ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์ ๋๋ค. ๋ฆฌ์กํธ๋ effect๊ฐ ์ํ๋๋ ์์ ์ ์ด๋ฏธ DOM์ด ์ ๋ฐ์ดํธ๋์์์ ๋ณด์ฅํฉ๋๋ค. |
There was a problem hiding this comment.
L227, L229์ ์ฌ์ฉํ์ ๊ฒ์ฒ๋ผ ~์ผ๊น์? ์ ๊ฐ์ ๋์์ค๊ฐ ๋์ฑ ์ฝ๊ธฐ ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค.
| >ํ | ||
| > | ||
| >Unlike `componentDidMount` or `componentDidUpdate`, effects scheduled with `useEffect` don't block the browser from updating the screen. This makes your app feel more responsive. The majority of effects don't need to happen synchronously. In the uncommon cases where they do (such as measuring the layout), there is a separate [`useLayoutEffect`](/docs/hooks-reference.html#uselayouteffect) Hook with an API identical to `useEffect`. | ||
| >`componentDidMount`๋ `componentDidUpdate`์๋ ๋ฌ๋ฆฌ `useEffect`์์ ์ฌ์ฉ๋๋ effect๋ ๋ธ๋ผ์ฐ์ ์์ ํ๋ฉด์ด ์ ๋ฐ์ดํธ๋๋ ๊ฒ์ ๋ฐฉํดํ์ง ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ ๋ฐ์ํ์ผ๋ก ๋ณด์ผ ์ ์๊ฒ ํ๋ ๋ถ๋ถ์ ๋๋ค. ๋๋ถ๋ถ์ effect๋ ๋๊ธฐ์ ์คํ์ด ํ์์์ต๋๋ค. ๋๊ธฐ์ ์คํ์ด ํ์ํ ๋๋ฌธ ๊ฒฝ์ฐ๋ค(๋ ์ด์์์ ๊ณ์ฐ๊ณผ ๊ฐ์)์ `useEffect`๊ณผ ๋์ผํ [`useLayoutEffect`](/docs/hooks-reference.html#uselayouteffect) Hook์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. |
There was a problem hiding this comment.
๋ฐ์ํ์ผ๋ก ๋ณด์ผ์ ์๊ฒ ์ ๊ฐ์ ๋ถ๋ถ์ ์๋ต์ฑ ํน์ ๋ฐ์์ฑ์ ํฅ์์ํจ๋ค๋ ์๋ฏธ๊ฐ ๋๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
์๋๋ ์ ๊ฐ ์์ฑํ๋ ๋ฒ์ญ์
๋๋ค. ์ฐธ๊ณ ๊ฐ ๋์ค๊น ํด์ ์ฒจ๋ถํฉ๋๋ค.
componentDidMount ํน์ componentDidUpdate ์๋ ๋ฌ๋ฆฌ useEffect๋ฅผ ํตํด ์์ฝ๋ effect๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ์
๋ฐ์ดํธํ๋ ๊ฒ์ ์ฐจ๋จํ์ง ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฑ์ ์๋ต์ฑ์ ๋์ฑ ํฅ์์์ผ์ค๋๋ค. ๋๋ถ๋ถ์ effect๋ค์ ๋๊ธฐ์ ์ผ๋ก ๋ฐ์ํ ํ์๊ฐ ์์ต๋๋ค. ํํ ๊ฒฝ์ฐ๋ ์๋์ง๋ง (๋ ์ด์์ ์ธก์ ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ) useEffect์ ๋์ผํ API๋ฅผ ์ฌ์ฉํ๋ useLayoutEffect ๋ผ๋ ๋ณ๋์ Hook์ด ์กด์ฌํฉ๋๋ค.
There was a problem hiding this comment.
์ฒจ๋ถํด์ฃผ์ ๋ด์ฉ์ ์๋น ๋ถ๋ถ ๋ฐ์ํด์ ์์ ํ๊ฒ ์ต๋๋ค.
componentDidMount ํน์ componentDidUpdate์๋ ๋ฌ๋ฆฌ useEffect์์ ์ฌ์ฉ๋๋ effect๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ์
๋ฐ์ดํธ๋๋ ๊ฒ์ ์ฐจ๋จํ์ง ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์์ฑ์ ํฅ์์์ผ์ค๋๋ค. ๋๋ถ๋ถ์ effect๋ค์ ๋๊ธฐ์ ์ผ๋ก ์คํ๋ ํ์๊ฐ ์์ต๋๋ค. ํํ์ง๋ ์์ง๋ง (๋ ์ด์์์ ์ธก์ ๊ณผ ๊ฐ์) ๋๊ธฐ์ ์คํ์ด ํ์ํ ๊ฒฝ์ฐ์๋ useEffect์ ๋์ผํ API๋ฅผ ์ฌ์ฉํ๋ useLayoutEffect๋ผ๋ ๋ณ๋์ Hook์ด ์กด์ฌํฉ๋๋ค.
|
|
||
| ### Tip: Use Multiple Effects to Separate Concerns {#tip-use-multiple-effects-to-separate-concerns} | ||
| ### ํ: ๊ด์ฌ์ฌ๋ฅผ ๊ตฌ๋ถํ๋ ค๊ณ ํ๋ค๋ฉด Multiple Effect๋ฅผ ์ฌ์ฉํ๋ผ{#tip-use-multiple-effects-to-separate-concerns} | ||
|
|
There was a problem hiding this comment.
์ฌ๊ธฐ๋ ์กด๋๋ง ๋์์ค๊ฐ ๋ค์ด๊ฐ๋ฉด ์ข์ง ์์๊น ํ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
|
|
||
| ## Next Steps {#next-steps} | ||
| ## ๋ค์ ์์ {#next-steps} | ||
|
|
There was a problem hiding this comment.
๋ค๋ฅธ ๋ฒ์ญ๋ณธ์ ์ฐธ๊ณ ํด๋ดค์ ๋, ๋ค์ ๋จ๊ณ๋ผ๋ ํํ์ด ๋ ๋ง๋ ํํ์ผ ๊ฒ ๊ฐ์ต๋๋ค.
| ``` | ||
|
|
||
| In the future, the second argument might get added automatically by a build-time transformation. | ||
| ๋๋ฒ์งธ ์ธ์๋ ์ฅ์ฐจ build-time ๋ณํ์ ์ํด ์๋์ผ๋ก ๋ํด์ง ์๋ ์์ต๋๋ค. |
There was a problem hiding this comment.
๋ ๋ฒ์งธ ์ธ์๋ ๋น๋ ์ ๋ณํ์ ์ํด ์๋์ผ๋ก ์ถ๊ฐ๋ ์๋ ์์ต๋๋ค.
์ธ์ ==> ์ธ์
build time ==> ๋น๋ ์
์ฅ์ฐจ ==> (์ญ์ )
์ ๊ฐ์ด ์์ฑํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
| ### ํ: Effect๋ฅผ ๊ฑด๋๋ฐ์ด ์ฑ๋ฅ ์ต์ ํํ๊ธฐ {#tip-optimizing-performance-by-skipping-effects} | ||
|
|
||
| In some cases, cleaning up or applying the effect after every render might create a performance problem. In class components, we can solve this by writing an extra comparison with `prevProps` or `prevState` inside `componentDidUpdate`: | ||
| ๋ชจ๋ ๋ ๋๋ง ์ดํ์ effect๋ฅผ ์ ๋ฆฌ(clean-up)ํ๊ฑฐ๋ ์ ์ฉํ๋ ๊ฒ์ด ๋๋๋ก ํผํฌ๋จผ์ค ์ด์(์ฑ๋ฅ์ ํ)๋ฅผ ๋ฐ์์ํค๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ํด๋์ค ์ปดํฌ๋ํธ์ ๊ฒฝ์ฐ์๋ `componentDidUpdate`์์ `prevProps`๋ `prevState`์์ ๋น๊ต๋ฅผ ํตํด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. |
There was a problem hiding this comment.
ํผํฌ๋จผ์ค ์ด์ ๋ ์ญ์ ํ๊ณ ์ฑ๋ฅ ์ ํ๋ผ๊ณ ๋ง ์์ฑํ์ ๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
| >์ฃผ์ | ||
| > | ||
| >If you use this optimization, make sure the array includes **all values from the component scope (such as props and state) that change over time and that are used by the effect**. Otherwise, your code will reference stale values from previous renders. Learn more about [how to deal with functions](/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies) and [what to do when the array changes too often](/docs/hooks-faq.html#what-can-i-do-if-my-effect-dependencies-change-too-often). | ||
| >์ด ์ต์ ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค๋ฉด ๋ฐฐ์ด์ด **์ปดํฌ๋ํธ ๋ฒ์ ๋ด์์ ๋ฐ๋๋ ๊ฐ๋ค๊ณผ effect์ ์ํด ์ฌ์ฉ๋๋ ๊ฐ๋ค์ ๋ชจ๋ ํฌํจํ๋ ๊ฒ**์ ์์ง ๋ง์์ฃผ์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ฌ ๊ฐ์ด ์๋ ์ด์ ์ ๋ ๋๋ง ๋์ ๊ฐ์ ์ฐธ๊ณ ํ๊ฒ ๋ฉ๋๋ค. ์ด์ ๋ํด์๋ [ํจ์๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ](/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies)๊ณผ [์์กด์ฑ ๊ฐ ๋ฐฐ์ด์ด ์์ฃผ ๋ฐ๋ ๋๋ ์ด๋ป๊ฒ ํด์ผํ๋๊ฐ](/docs/hooks-faq.html#what-can-i-do-if-my-effect-dependencies-change-too-often)์์ ๋ ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค. |
There was a problem hiding this comment.
์์ง ๋ง์์ฃผ์ธ์ ==> ๊ธฐ์ตํด์ฃผ์ธ์
์์กด์ฑ ๊ฐ ๋ฐฐ์ด ==> ์์กด์ฑ ๋ฐฐ์ด
๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
|
์๋ฆผ์ด ์์ ์๋ก ์์ ํ์ฌ ์ปค๋ฐํ์ ๋ด์ฉ์ ํ์ธํ๋๋ฐ, ์ ๊ฐ ๋ฆฌ๋ทฐํ ๋ด์ฉ์ ๋ฉด๋ฐํ๊ฒ ๋ฐ์ํด์ฃผ์
จ๋๋ผ๊ตฌ์! |
์ ๋ฐ์ดํธ ํ์ธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํน์ฌ ๋ชจ๋ฅด๋ ์ค๋ ๋ง์ถค๋ฒ ๊ฒ์ฌ๋ฅผ ํ๋ฒ ๋ ์งํํ๊ณ approval์ ํ์ํ ์์๋ฅผ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค. ๋ฆฌ๋ทฐ ์ ๋ง ๊ฐ์ฌํด์! |
There was a problem hiding this comment.
@anthonyminyungi ๋๊ป์ ๊ต์ฅํ ์ ๋ณด์์ฃผ์
์, ๋ฐ๋ก ๋ ์ฝ๋ฉํธ ํ ๊ฑด ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
@yumidev ๋ฒ์ญํ๋๋ผ ๊ณ ์ํ์
จ์ต๋๋ค!
|
๋ฑํ ๋ง์ถค๋ฒ๋ ๋ฌธ์ ์์ด ๋ณด์ด๋ฏ๋ก ๋จธ์งํ๊ฒ ์ต๋๋ค! |
Progress