inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Slack 클론 코딩[실시간 채팅 with React]

안 읽은 메시지 개수 표시하기

안읽은메세지 표시

516

장산

작성한 질문수 46

0

안녕하세요 제로초님

mutate(0)으로 했는데도 콘솔찍어보니까 다시 1로 변합니다

channel부분만 이러네요

스크린샷 2023-05-16 오후 8.29.28.png

react 웹팩 typescript socket.io babel 클론코딩

답변 2

0

제로초(조현영)

이게 결국 지금까지 내용을 종합적으로 봐야합니다. 네트워크탭에서 0으로 찍혔는데 왜 콘솔에서는 0이 나왔다가 19가 다시 나오는지를 봐야하는 거라서요.

0

제로초(조현영)

저 data가 뭔데요? 두 번 질문하지 않게 해주세요. ㅠ 제발 질문 올릴 때의 공지사항도 읽어주세요.

0

장산

  const { data: count, mutate } = useSWR<number>( // 채팅 갯수 가져오는 api , count:n개
    userData ? `/api/workspaces/${workspace}/channels/${channel.name}/unreads?after=${date}` : null,
    fetcher,
  );

아 죄송합니다 제로초님 이 count입니다

import { IChannel, IUser } from '@typings/db';
import fetcher from '@utils/fetcher';
import React, { useEffect, VFC } from 'react';
import { useParams } from 'react-router';
import { NavLink, useLocation } from 'react-router-dom';
import useSWR from 'swr';

interface Props {
  channel: IChannel;
}
const EachChannel: VFC<Props> = ({ channel }) => {
  const { workspace } = useParams<{ workspace?: string }>();
  const location = useLocation();
  console.log('location', location.pathname);
  const { data: userData } = useSWR<IUser>('/api/users', fetcher, {
    dedupingInterval: 2000, // 2초
  });
  const date = localStorage.getItem(`${workspace}-${channel.name}`) || 0;
  const { data: count, mutate } = useSWR<number>( // 채팅 갯수 가져오는 api , count:n개
    userData ? `/api/workspaces/${workspace}/channels/${channel.name}/unreads?after=${date}` : null,
    fetcher,
  );
  console.log('count', count);

  useEffect(() => {
    //location.pathname이 `/workspace/${workspace}/channel/${channel.name}`이랑 같으면 mutate가 0으로 재캐싱된다
    if (location.pathname === `/workspace/${workspace}/channel/${channel.name}`) {
      mutate(0);
    }
  }, [mutate, location.pathname, workspace, channel]);

  return (
    <NavLink key={channel.name} activeClassName="selected" to={`/workspace/${workspace}/channel/${channel.name}`}>
      <span className={count !== undefined && count > 0 ? 'bold' : undefined}># {channel.name}</span>
      {count !== undefined && count > 0 && <span className="count">{count}</span>}
    </NavLink>
  );
};

export default EachChannel;

스크린샷 2023-05-16 오후 11.33.42.png

0

제로초(조현영)

date랑 useData같은것도 같이 찍어주세요.

0

장산

스크린샷 2023-05-16 오후 11.38.35.png스크린샷 2023-05-16 오후 11.38.47.png

0

제로초(조현영)

https://github.com/ZeroCho/sleact/blob/77105b0045a20a86390be47f1ce9871d0d08a55f/front/pages/Channel/index.tsx#L134-L136C28

채널 들어갈 때 여기서 타임스탬프가 업데이트되어야 하는데요. 타임스탬프가 업데이트되고 있지 않은 것으로 보입니다. 로컬스토리지 직접 확인해보세요. 채널 들어갈 때마다 타임스탬프 올라가는지

0

장산

로컬스토리지 확인결과 채널들을 누를때마다 업데이트가 되고있는것을 확인했습니다!

0

제로초(조현영)

그러면 마지막으로 네트워크탭에서 unreads 요청들 response 안바뀌는지 확인해보세요. 여기서 서버에서 계산한 숫자 주거든요.

0

장산

바뀝니다!

imageimageimage

0

제로초(조현영)

저 unreads 들 전부 같은 채널인게 맞나요? 뭔가 서로 다른 채널인것같은 느낌인데

하나의 채널에 대해서만 봐야합니다.

0

장산

일단 일반 채널 냅두고 다삭제했습니다

imageimageimage

0

제로초(조현영)

dm 눌렀다가 일반채널 돌아와도 안지워지는건가요?? 저기만 리렌더링이 안되는건데...

기본 셋팅과 관련하여

0

92

1

초기 셋팅 back과 front만 남겨두고 다 지운 후 진행 방법

0

96

2

focus 시에만 화면 업데이트 되는 이유 + 해결방법

0

150

2

useEffect 개수 관리

0

110

2

라이브러리 서치 방법

0

104

2

함수 정의 패턴

0

77

1

npm run dev 에러

0

152

3

npx webpack 후 에러

0

178

2

'void' 형식 식의 truthiness를 테스트할 수 없습니다.ts(1345)

0

144

2

사용자 가입시 에러발생 (TypeError: Cannot read properties of null (reading 'addMembers')

1

178

2

초기세팅중 packge.json 에러떠요

0

156

2

CORS - Access-Control-Allow-Origin 누락 문제

0

431

3

로그인 페이지 무한 새로고침 현상

0

598

2

Module not found: Error: Can't resolve './App' 에러

0

959

1

배포 방법

0

298

2

npm run dev 시 빌드가 매우 느려졌습니다

0

990

2

alias 경로 설정 오류

0

452

2

fetcher 함수의 data 값이 두번 찍히는 이유

0

278

1

제네릭 질문

0

218

2

ts-node 대신 tsx 사용여부

0

373

1

배포 관련 질문

0

247

1

[nginx + https] 서비스를 실행하면 niginx가 아닌 서비스 화면을 보여주게 하고 싶습니다.

0

385

2

[배포하기] webpack에 aws 퍼블릭 IPv4 주소 와 포트 주소를 작성하고 나서 빌드후 실행하면 오류가 발생합니다.

0

336

1

users 호출 시 쿠키가 담기지 않는 이슈 질문드립니다.

0

247

2