11.19航海68日目TIL


pathNameのインポート

  • 他の人がチャットを送信すると、チャットプレビューウィンドウの情報を変更するために目覚まし時計が検出されると、loadTalkRoomListToAxios()が発行される.
  • // chat 보냈을 때 채팅방에 둘다 있을 때 타입 0
    // chat 보냈을 때 채팅방에 한명만 있고 상대방은 로그인 했을 때 타입 1
    // chat 보냈을 때 상대방이 로그아웃 타입 2
    // tap 요청 받았을 때 타입 3
    // tap 요청 거절한게 타입 4
    // tap 요청 수락한게 타입 5
    if (newNoti.type === 1) {
      console.log('채팅알람!');
      console.log('디패 로드 톡룸');
      await dispatch(loadTalkRoomListToAxios());
      dispatch(setChatNoti(true));
    }
  • user Aメッセージ送信時
  • userBのチャットルームリストでプレビューします.

  • user Bは/Gabtalkページ上でのみスケジューリングされるため、コードを変更しました.
    const pageCheck = window.location.pathname;
    
    if (newNoti.type === 1) {
      if (pageCheck === '/grabtalk') {
        console.log('디패 로드 톡룸');
        await dispatch(loadTalkRoomListToAxios());
      }
      dispatch(setChatNoti(true));
    }
  • コンソール定価

  • 動作が正常なので、いろいろなテストをしているうちに、ホームページに戻り、チャットページに着くと、pathnameが飛んでいて、プレビューが更新されていないという問題が見つかりました.

    urlを取得する方法をいくつか試しました
    import { useHistory, useLocation } from 'react-router-dom';
    
    const history = useHistory();
    const location = useLocation();
    
    const pageCheck = window.location.href.split('/');
    const nowPage = pageCheck[pageCheck.length - 1];
    const nowPageE = window.location.pathname;
    
    if (newNoti.type === 1) {
      console.log(
      'nowPageE = window.location.pathname ===>',
      nowPageE,
    );
    console.log('location ====>', location);
    console.log('history ====>', history);
    console.log('nowPage ====>', nowPage);
    console.log(
      'pageCheck = window.location.href.split("/") ====>',
      pageCheck,
    );
      if (nowPage  === '/grabtalk') {
        console.log('디패 로드 톡룸');
        await dispatch(loadTalkRoomListToAxios());
      }
      dispatch(setChatNoti(true));
    }
  • このようにコンソールがHistoryであることを確認しますlocation.pathname以外は、すべてルートパスに変更されていることを確認できます.
  • の正確な原因はまだ分かりません...ゆっくり探してね.
  • は今解決したと思い、コンソールを撮り直し、同じ症状が現れた.
  • const nowPage = history.location.pathname;
    
    if (newNoti.type === 1) {
      console.log('history.location.pathname ====>', nowPage);
      console.log('history ====>', history);
      if (nowPage === '/grabtalk') {
        console.log('디패 로드 톡룸');
        await dispatch(loadTalkRoomListToAxios());
      }
      dispatch(setChatNoti(true));
    }
  • 歴史にはnowPageという変数の歴史が含まれていることが明らかになった.location.pathnameはルートパスを出力します.
  • の最終的な解決策は変数に含まれずhistoryに直接導入され,解決したがあまりにも不快であった.正確な原因が何なのか分からないし、どうやって探せばいいのか分からないし...
  • でも解決してよかった今日は本当に5時に寝るつもりでしたが、もうすぐ7時になります.
  • if (newNoti.type === 1) {
      if (history.location.pathname === '/grabtalk') {
        console.log('디패 로드 톡룸');
        await dispatch(loadTalkRoomListToAxios());
      }
      dispatch(setChatNoti(true));
    }