<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>growing_dev.log</title>
        <link>https://velog.io/</link>
        <description>꿈나무 개발자</description>
        <lastBuildDate>Mon, 18 Apr 2022 09:40:42 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>growing_dev.log</title>
            <url>https://velog.velcdn.com/images/growing_dev/profile/62411cbc-d0a2-4d63-9900-387607ff7ff1/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. growing_dev.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/growing_dev" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[React] useEffect vs useLayoutEffect]]></title>
            <link>https://velog.io/@growing_dev/React-useEffect-vs-useLayoutEffect</link>
            <guid>https://velog.io/@growing_dev/React-useEffect-vs-useLayoutEffect</guid>
            <pubDate>Mon, 18 Apr 2022 09:40:42 GMT</pubDate>
            <description><![CDATA[<p><code>useEffect</code> hook만 사용하다 <code>useLayoutEffect</code> hook을 알게되어 차이점을 기록하려한다.
두 hook은 화면이 렌더링될 때 실행된다는 점에서는 동일하다. 그러나 약간의 차이점이 존재한다.</p>
<p>1) <code>useEffect</code>
화면이 레이아웃과 배치가 끝난 이후 실행된다.
아래의 코드를 살펴보자</p>
<pre><code class="language-javascript">function app() {
  const [count, setCount] = useState(0);
  useEffect(() =&gt; {
    setCount(25);
  },[]);
  return(
      &lt;div&gt;{count}&lt;/div&gt;
  )
}</code></pre>
<p>위의 코드는 화면이 렌더링 될때 count <code>state</code>를 25로 변경해준 후 렌더링 할 것이다. 그러나 화면을 새로고침을 해보면 표시되는 count가 <code>initialState</code>값인 0이었다가 아주 빠르게 25로 변경되는 것을 알 수 있다. 
-&gt; 화면이 렌더링 될 때 먼저 count <code>state</code>를 <code>initialState</code>로 레이아웃배치와 그리기를 완료한 후 그제서야 <code>state</code>를 우리가 설정한 25로 변경해줌을 알 수 있다.</p>
<p>그렇다면 useLayoutEffect는 어떻게 동작할까?
2)<code>useLayoutEffect</code> 
화면이 레이아웃배치와 그리기전에 먼저 실행된다.
다음 코드를 살펴보자</p>
<pre><code class="language-javascript">function app() {
  const [count, setCount] = useState(0);
  useLayoutEffect(() =&gt; {
    setCount(25);
  },[]);
  return(
      &lt;div&gt;{count}&lt;/div&gt;
  )
}</code></pre>
<p>보면 <code>useEffect</code>를 사용했을 때와 별반 차이가 없어 보인다. 그러나 <code>useLayoutEffect</code>를 사용하면 <code>useEffect</code>를 사용했을 때와 달리 count <code>state</code>가 <code>initialState</code>가 아닌 <code>setCount</code>로 설정한 값으로 처음부터 렌더링 되는 점을 알 수 있다.</p>
<p>따라서, 화면이 렌더링될때 상태값에 의존을 많이 하고 있다면 <code>useEffect</code>를 사용하는 것보다 <code>useLayoutEffect</code>를 사용하는 것이 원하는 결과를 얻을 수 있을 것이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[RN] 에뮬레이터 실행 에러]]></title>
            <link>https://velog.io/@growing_dev/RN-%EC%97%90%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%84%B0-%EC%8B%A4%ED%96%89-%EC%97%90%EB%9F%AC</link>
            <guid>https://velog.io/@growing_dev/RN-%EC%97%90%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%84%B0-%EC%8B%A4%ED%96%89-%EC%97%90%EB%9F%AC</guid>
            <pubDate>Sat, 16 Apr 2022 16:52:52 GMT</pubDate>
            <description><![CDATA[<p>이제까지 잘만 실행되던 에뮬레이터가 갑자기 아래 에러가 발생하면서 실행이 안되기 시작했다.....
<code>error Failed to launch emulator. Reason: Could not start emulator within 30 seconds..</code>
그리고 에뮬레이터가 실행되면서 <code>could not automatically detect an adb binary....</code>등의 메세지가 떴다.</p>
<p>그래서 열심히 구글링을 해보니..
백신이 adb.exe파일을 바이러스 취급해서 실행이 안되는 문제라고 한다.</p>
<p>해결은 다음과 같은 방법으로 했다.
에뮬레이터의 설정에 들어가서 use detected adb location옵션을 꺼주었다.
<img src="https://velog.velcdn.com/images/growing_dev/post/1a34ca70-dbb1-404d-bc4a-f14c4b48ed93/image.png" alt="">
안드로이드 스튜디오 공식문서에 가보니 안드로이드 스튜디오 외부에서 에뮬레이터를 실행하고 특정 adb실행파일을 사용하려면 이 옵션을 선택 해제해주어야 한다고 한다.</p>
]]></description>
        </item>
    </channel>
</rss>