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

proyong님의 프로필 이미지
proyong

작성한 질문수

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

채팅 보내기

한글입력시 채팅이 두개씩 가는 오류

작성

·

682

0

DM을 보내면 이모티콘과 영문은 한번씩 가지만

한글로 보낼 경우 2개씩 중복해서 보내집니다

무엇이 잘못된 걸까요?

import ChatBox from '@components/ChatBox';
import ChatList from '@components/ChatList';
import { Container, Header } from '@pages/Channel/styles';
import { IDM } from '@typings/db';
import fetcher from '@utils/fetcher';
import React, { useCallback } from 'react';
import gravatar from 'gravatar';
import { useParams } from 'react-router';
import useSWR from 'swr';
import useInput from '@hooks/useInput';
import axios from 'axios';

const DirectMessage = () => {
  const { workspace, id } = useParams<{ workspace: string; id: string }>();
  const { data: userData } = useSWR(`/api/workspaces/${workspace}/users/${id}`, fetcher);
  const { data: myData } = useSWR('/api/users', fetcher);
  const [chat, onChangeChat, setChat] = useInput('');
  const {
    data: chatData,
    mutate: mutateChat,
    revalidate,
  } = useSWR<IDM[]>(`/api/workspaces/${workspace}/dms/${id}/chats?perPage=20&page=1`, fetcher);

  const onSubmitForm = useCallback(
    (e) => {
      e.preventDefault();
      console.log(chat);
      if (chat?.trim()) {
        axios
          .post(`/api/workspaces/${workspace}/dms/${id}/chats`, {
            content: chat,
          })
          .then(() => {
            revalidate();
            setChat('');
          })
          .catch(console.error);
      }
    },
    [chat, chatData],
  );

  if (!userData || !myData) {
    return null;
  }
  return (
    <Container>
      <Header>
        <img src={gravatar.url(userData.email, { s: '24px', d: 'retro' })} alt={userData.nickname} />
      </Header>
      <ChatList chatData={chatData} />
      <ChatBox chat={chat} onChangeChat={onChangeChat} onSubmitForm={onSubmitForm} />
    </Container>
  );
};

export default DirectMessage;

답변 3

0

이거 해결하신 분 있으신가요??

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

마찬가지로 sleact.nodebird.com에서는 되는지 확인해주세요. 된다면 제 깃헙 코드를 쓰셔야 할 것 같습니다.

0

저도 한글만 쳤을때 2번씩 전송되던데.. 혹시 해당문제 해결하셨나요 ??

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

실제 배포된 사이트에서도 두번씩 쳐지시나요?

배포하신 사이트는 아주 잘됩니다 ㅎㅎ 

그 배포하실때 사용하신 코드가 https://github.com/ZeroCho/sleact/tree/master/front
이건가요 ??? 

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

네 그 코드입니다. 한 번 클론받아서 해보시겠어요?

클론받아서 실행해본것도 아주 잘되요 ㅋㅋ  한번 비교해보면서 오타난곳없나 찾아볼게요!! 감사합니다 

0

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

https://sleact.nodebird.com

여기에서도 똑같이 두 번씩 쳐지나요?

proyong님의 프로필 이미지
proyong
질문자

아뇨 한번만 갑니다.

네트워크에서 chats이 한번만 가야되는데

저는 한글로 쳤을때 2번씩 가게되네요 ㅜㅜ

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

이게 브라우저 한글 버그인지 코드 오타인지 구별이 잘 안 가네요. ㅠ 그런데 제 배포본에서는 한번만 쳐지신다고 하신 것을 보면 코드 오타 가능성도 있어 보입니다.

proyong님의 프로필 이미지
proyong

작성한 질문수

질문하기