안녕하세요
useEffect 함수에서, 전역 state(Context로 주입한 것)의 값이 변화하는지를 확인하면서 특정 작업을 하는 코드를 작성하려 합니다.
1 2 3 4 5 | useEffect(() => { if (state.get('message').size) { // 메세지가 추가되면, 해당 메시지가 보이도록 스크롤을 이동시킴 } }, [state.get('message').size]); | cs |
채팅 ui같은걸 만들고 있는데, 메시지가 추가될때마다 자동으로 스크롤되게 하려고 하거든요
immutable.js 사용하느라고 state를 Map으로 만들어서, 저렇게 get메소드를 써야만 접근이 되겠던데
실행하면 자꾸 dependency 표기 저렇게 하지 말라고 경고가 나옵니다.
제가 뭘 몰라서 지금 저렇게 쓰고 있는 걸까요? ㅠㅠ
const message = state.get('message'); [message] 넣으면 될듯. 사이즈는 예를들어 1개추가되고 1개 삭제되면 업데이트 안되니까 부적절한듯
아 그냥 useEffect 바깥에다가 그 변수를 선언해서 쓰면 되는거군요 아이고 사이즈에 대한 이야기도 감사합니다 미처 생각을 못 했네요 ㅠㅠ
아 세상에서 가장 빡대가리 된 기분이네 ㅋㅋㅋㅋ
시간에 여유가 있으면 react-use 같은 훅 라이브러리 소스 코드 참고하셈. hook 조합으로 이것저것 다 할 수 있고 대게 더 깔끔하고 재사용좋게 만들수있음