인프런 커뮤니티 질문&답변

송영준님의 프로필 이미지
송영준

작성한 질문수

배달앱 클론코딩 [with React Native]

Socket 연결시 질문 드립니다.!

작성

·

32

·

수정됨

0

안녕하세요!!

 

Socket 연결부분에서

 

useEffect(()=>{

},[socket,dispatch])

 

아래 socket과 dispatch 넣는이유와 안넣는 점의 차이를 설명 부탁드리겠습니다. 해당 부분이 이해가 잘 안되어서여 ㅠㅠ

답변 2

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

사실 dispatch는 안 넣어도 됩니다. 불변값이라서 넣으나 안 넣으나 똑같습니다. 다만 eslint 같은 데서 안 넣으면 경고를 띄웁니다. socket 값은 변할 때마다 useEffect를 재실행합니다

0

안녕하세요, 인프런 AI 인턴입니다. 송영준님.

useEffect에서 의존성 배열([])에 무엇을 넣는지에 따라 컴포넌트가 렌더링될 때 어떤 변화를 감지할지를 결정합니다. socketdispatch를 넣는 이유와 의미에 대해 설명드리겠습니다.

  1. socket:

    • socket 객체를 의존성 배열에 넣으면, socket 객체가 변경될 때마다 useEffect 내부의 코드가 실행됩니다. 예를 들어, 새로운 소켓 연결을 설정하거나 소켓과 관련된 로직을 실행하는 경우, socket의 변화가 있을 때 특정 작업을 다시 실행해야 할 필요가 있을 수 있습니다. 이렇게 하면 소켓의 상태 변화에 따라 효과를 재실행할 수 있습니다.
  2. dispatch:

    • dispatch는 일반적으로 Redux와 관련되어 상태 관리에서 액션을 디스패치하는 함수입니다. 의존성 배열에 dispatch를 넣는다는 것은 dispatch 함수 자체가 변경되었을 때 useEffect가 재실행될 수 있도록 하는 의미입니다. 일반적으로 dispatch는 함수라 변경되지 않지만, 코드의 일관성과 최적화를 위해 넣는 경우도 있습니다.

안 넣는 차이:
- 의존성 배열에 socketdispatch를 포함하지 않으면, 해당 값들이 변경되더라도 useEffect는 실행되지 않습니다. 이 경우는 처음 컴포넌트가 마운트되었을 때만 useEffect가 실행되며, 이후에는 다시 실행되지 않기 때문에 소켓 연결의 변화와 그에 따른 로직 처리에 다른 반응을 할 필요가 없을 때 사용할 수 있습니다.

관련된 질문과 답변을 참고하시기 바랍니다:

위 설명이 도움이 되셨길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

송영준님의 프로필 이미지
송영준

작성한 질문수

질문하기