react + socket io 애플리케이션에서 채팅을 표시하는 방법

조나단 치옹

내 채팅이 첫 번째 반응 앱 인스턴스에는 올바르게 표시되지만 두 번째에는 표시되지 않습니다. https://imgur.com/a/7FVCvjW

나는 무엇이 잘못되었는지 알아낼 수 없었다. 오른쪽 (이미지 공유)이 제대로 표시되지 않는 이유를 찾지 못했습니다.

export const Message = ({ message, name }) => {
  const style = (sender) => {
    if (sender === "admin") {
      return "admin";
    } else if (sender === name) {
      return "user";
    } else {
      return "other";
    }
  };

  return (
    <Fragment>
      <div className="messageContainer">
        <p className={`content ${style(message.user)}`}>{message.message}</p>
        {name === message.user ? null : (
          <p className="sender">{message.user}</p>
        )}
      </div>
    </Fragment>
  );
};

CSS

.content {
  margin-right: 10px;
}
.admin {
  color: rgb(156, 156, 156);
}

.user {
  background-color: rgba(255, 255, 255, 0.712);
  display: inline;
  padding: 10px;
  border-radius: 5px;
  box-shadow: 2px 2px 2px #888888;
  margin-left: auto;
}

.other {
  background-color: rgba(255, 255, 255, 0.712);
  display: inline;
  padding: 10px;
  border-radius: 5px;
  box-shadow: 2px 2px 2px #888888;
}

.messageContainer {
  display: flex;
  align-items: center;
}

.sender {
  color: rgb(156, 156, 156);
}


Daniil Loban |

다음을 제거하십시오.

  if (sender === "admin") {
   return "admin";
  } else 

이것을 사용하는 대신 플래그로 처리해야하는 name경우user = {name, isAdmin}

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Add React in One Minute</title>
    <style type="text/css">
      h3 {
        color: white;
      }
      .content {
        margin-right: 10px;
      }

      .admin {
        color: rgb(156, 156, 156);
      }
      .user {
        background-color: rgba(255, 255, 255, 0.712);
        display: inline;
        padding: 10px;
        border-radius: 5px;
        box-shadow: 2px 2px 2px #888888;
        margin-left: auto;
      }

      .other {
        background-color: rgba(255, 255, 255, 0.712);
        display: inline;
        padding: 10px;
        border-radius: 5px;
        box-shadow: 2px 2px 2px #888888;
      }

      .messageContainer {
        display: flex;
        align-items: center;
      }

      .sender {
        color: rgb(156, 156, 156);
      }
    </style>
  </head>
  <body style="background: blue">
    <div id="root"></div>
    <script src="https://unpkg.com/react@17/umd/react.development.js" crossorigin ></script>
    <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js" crossorigin ></script>
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> 
    <script type="text/babel">
      const {Fragment} = React;

      const Message = ({ message, name }) => {
        const style = (sender) => {
          // if (sender === "admin") {
          //  return "admin";
          // } else 
          if (sender === name) {
            return "user";
          } else {
            return "other";
          }
        };
        return (
          <Fragment>
            <div className="messageContainer">
              <p className={`content ${style(message.user)}`}>{message.message}</p>
              
              {name === message.user ? null : (
                <p className="sender">{message.user}</p>
              )}

            </div>
          </Fragment>
        );
      };

      const App = () => {
        return (
          <Fragment>
            <h3>From Jonh's point of view</h3>
            <ul>
              <Message message={{user: "john", message: "Hi"}} name="john"/>
              <Message message={{user: "mary", message: "Hey from user"}} name="john"/>
            </ul>
            <h3>From  Mary's point of view</h3>
            <ul>
              <Message message={{user: "john", message: "Hi"}} name="mary"/>
              <Message message={{user: "mary", message: "Hey from user"}} name="mary"/>
            </ul>
            <h3>From an anonymous point of view</h3>
            <ul>
              <Message message={{user: "john", message: "Hi"}} name=""/>
              <Message message={{user: "mary", message: "Hey from user"}} name=""/>
            </ul>
          </Fragment>
        );
      };

      ReactDOM.render(<App />, document.getElementById("root"));
    </script>
  </body>
</html>
 

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Socket.IO를 사용하여 VOIP 채팅 애플리케이션 생성

분류에서Dev

iOS 애플리케이션에서 XMPP Facebook 채팅을 구성하는 방법

분류에서Dev

Android 채팅 애플리케이션을 만드는 방법

분류에서Dev

React Native에서 킬 앱에서 애플리케이션을 감지하는 방법은 무엇입니까?

분류에서Dev

2 계층 애플리케이션의 Sails.js socket.io. 연결 옵션을 정의하는 방법은 무엇입니까?

분류에서Dev

애플리케이션 화면에서 .desktop 애플리케이션을 시작하는 방법

분류에서Dev

iOS 애플리케이션에서 채팅을 만드는 방법은 무엇입니까?

분류에서Dev

DukeScript 웹 애플리케이션에서 라우팅을 처리하는 방법

분류에서Dev

React 웹 애플리케이션에서 사진을 찍는 방법 (기본이 아님)

분류에서Dev

Windows Phone 애플리케이션에서 Branch.io를 구현하는 방법

분류에서Dev

nginx, socket.io 및 nodejs를 사용하여 라즈베리 파이에서 Angular 애플리케이션 호스팅

분류에서Dev

PubNub 기본 채팅 애플리케이션을 구성하는 방법 iOS

분류에서Dev

Wildfly 8 애플리케이션 서버에서 EJB 3.0 애플리케이션을 배포하는 방법

분류에서Dev

socket.io에서 클라이언트 세션을 처리하는 방법

분류에서Dev

Socket.io-React : 방에 연결된 사용자를 표시하는 방법은 무엇입니까?

분류에서Dev

C #의 콘솔 애플리케이션에서 웹 애플리케이션을 실행하는 방법

분류에서Dev

Android에서 LBS 애플리케이션을 만드는 방법

분류에서Dev

.Net Core 2.1 웹 애플리케이션에서 원시 테이블을 표시하는 방법

분류에서Dev

React 애플리케이션에서 분해 대 점 표기법

분류에서Dev

Android 애플리케이션의 브라우저에서 Android 애플리케이션으로 .html 파일의 내용을 열고 표시하는 방법

분류에서Dev

Socket.io로 사용자 간의 채팅 시스템을 구축하는 방법은 무엇입니까?

분류에서Dev

쉘에서 애플리케이션을 "올바르게"시작하는 방법

분류에서Dev

Android 장치에서 알람 애플리케이션을 시작하는 방법

분류에서Dev

Android 애플리케이션에서 왜곡없이 사진을 표시하는 방법

분류에서Dev

Vue 및 Java EE를 사용하여 웹 애플리케이션에서 채팅 시스템을 구현하는 방법은 무엇입니까?

분류에서Dev

Lubuntu에서 애플리케이션을 전체 화면으로 표시하는 방법은 무엇입니까?

분류에서Dev

Lubuntu에서 애플리케이션을 전체 화면으로 표시하는 방법은 무엇입니까?

분류에서Dev

알림 영역에서 작업 표시 줄로 애플리케이션을 반환하는 방법

분류에서Dev

MMC C # 애플리케이션에서 ScopeNode의 자식을 표시하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Socket.IO를 사용하여 VOIP 채팅 애플리케이션 생성

  2. 2

    iOS 애플리케이션에서 XMPP Facebook 채팅을 구성하는 방법

  3. 3

    Android 채팅 애플리케이션을 만드는 방법

  4. 4

    React Native에서 킬 앱에서 애플리케이션을 감지하는 방법은 무엇입니까?

  5. 5

    2 계층 애플리케이션의 Sails.js socket.io. 연결 옵션을 정의하는 방법은 무엇입니까?

  6. 6

    애플리케이션 화면에서 .desktop 애플리케이션을 시작하는 방법

  7. 7

    iOS 애플리케이션에서 채팅을 만드는 방법은 무엇입니까?

  8. 8

    DukeScript 웹 애플리케이션에서 라우팅을 처리하는 방법

  9. 9

    React 웹 애플리케이션에서 사진을 찍는 방법 (기본이 아님)

  10. 10

    Windows Phone 애플리케이션에서 Branch.io를 구현하는 방법

  11. 11

    nginx, socket.io 및 nodejs를 사용하여 라즈베리 파이에서 Angular 애플리케이션 호스팅

  12. 12

    PubNub 기본 채팅 애플리케이션을 구성하는 방법 iOS

  13. 13

    Wildfly 8 애플리케이션 서버에서 EJB 3.0 애플리케이션을 배포하는 방법

  14. 14

    socket.io에서 클라이언트 세션을 처리하는 방법

  15. 15

    Socket.io-React : 방에 연결된 사용자를 표시하는 방법은 무엇입니까?

  16. 16

    C #의 콘솔 애플리케이션에서 웹 애플리케이션을 실행하는 방법

  17. 17

    Android에서 LBS 애플리케이션을 만드는 방법

  18. 18

    .Net Core 2.1 웹 애플리케이션에서 원시 테이블을 표시하는 방법

  19. 19

    React 애플리케이션에서 분해 대 점 표기법

  20. 20

    Android 애플리케이션의 브라우저에서 Android 애플리케이션으로 .html 파일의 내용을 열고 표시하는 방법

  21. 21

    Socket.io로 사용자 간의 채팅 시스템을 구축하는 방법은 무엇입니까?

  22. 22

    쉘에서 애플리케이션을 "올바르게"시작하는 방법

  23. 23

    Android 장치에서 알람 애플리케이션을 시작하는 방법

  24. 24

    Android 애플리케이션에서 왜곡없이 사진을 표시하는 방법

  25. 25

    Vue 및 Java EE를 사용하여 웹 애플리케이션에서 채팅 시스템을 구현하는 방법은 무엇입니까?

  26. 26

    Lubuntu에서 애플리케이션을 전체 화면으로 표시하는 방법은 무엇입니까?

  27. 27

    Lubuntu에서 애플리케이션을 전체 화면으로 표시하는 방법은 무엇입니까?

  28. 28

    알림 영역에서 작업 표시 줄로 애플리케이션을 반환하는 방법

  29. 29

    MMC C # 애플리케이션에서 ScopeNode의 자식을 표시하는 방법은 무엇입니까?

뜨겁다태그

보관