Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- tts-1
- flex특징
- ime일본어처리
- DestructuringAssignment
- 레이아웃모델
- flexgrid차이점
- 자바스크립트filter
- 이터레이션프로토콜
- 자바스크립트sort함수
- 자바스크립트문법 #노마드코더 #
- ES6란
- Realtime
- 바닐라JS #바닐라JS로크롭앱만들기 #
- OpenAI
- javascript문법
- JAVA #Swing #자바스윙 #스윙
- 이터러블프로토콜
- chatGPT
- interable
- ime란
- gpt-4o-transcribe
- 음성채팅
- flex사용법
- realtimeapi
- 배열재정렬함수
- 자바객체 #자바인스턴스 #객체와인스턴스차이점
- whisper-1
- iterationprotocol
- AI
- 이터레이터프로토콜
Archives
- Today
- Total
끄적끄적 개발기록
react-query, retetchOnWindowFocus 본문
react-query 비동기 함수가 돌아가고 있을 때 다른 브라우저 창을 갔다가 돌아오면 focus가 다시 되니까 리액트 쿼리가 retetchOnWindowFocus의 기본 값으로 messageList를 다시 불러와,
메시지 답변이 왔음에도 불구하고 메시지를 run 시키는 함수는 계속 돌아가고 있어 isAnswerLoading이 false가 아닌 true로 되어지는 문제 발생.
useEffect(() => {
if (!runId || !threadId) return;
const checkRunStatus = async () => {
const runStatus = await refetchRetrieveRun();
if (runStatus?.data?.status === 'completed') {
setIsAnswerLoading(false);
setQuery('');
refetchMessageList();
}
};
const interval = setInterval(checkRunStatus, 500);
return () => clearInterval(interval);
}, [retrieveRun?.status, refetchRetrieveRun, runId, setIsAnswerLoading, threadId, refetchMessageList]);
useGetMessageList로 들어가
const useGetMessageList = ({ thread_id }: ReqGetMessageList) => {
return useQuery({
queryKey: [MESSAGE_LIST_KEY.lists(), thread_id],
queryFn: () => getMessageList({ thread_id }),
select: data => data.slice().reverse(),
enabled: !!thread_id,
refetchOnWindowFocus: false,
});
};
refetchOnWindowFocus: false로 실행하니 문제 해결!!!!
다른 창을 갔다와도 실행 중인 비동기 함수가 이어서 잘 실행이 된다.
'개발 > Problem&Solution' 카테고리의 다른 글
| Typescript 인덱싱 에러 (0) | 2024.07.15 |
|---|---|
| IME과 textarea enter처리 (0) | 2024.07.09 |
| react 버그 해결 (1) | 2024.06.10 |
| react hook의 호출 규칙 (0) | 2024.05.08 |
| 객체 비교에서 한 실수 (1) | 2024.05.02 |