[RN] react-native Pull Down refresh

2024. 6. 13. 13:27·React Native
반응형
반응형

🐰: Appl App 심사를 위해서는 '차단'기능 필수 더라구요.

3번의 리젝 후 백엔드 프로님과 후다닥 차단 기능을 추가했어요🙈

오늘 포스팅할 기능은

앱에서 화면을 아래로 당겨서 새로고침 하는 방법입니다.

 

Pull Down Refresh - 화면 아래로 당겨서 새로고침 하기
Pull Down Refresh - 화면 아래로 당겨서 새로고침 하기

 


import styled from '@emotion/native';
import { useQuery } from '@tanstack/react-query';
import React, { useCallback, useRef, useState } from 'react';
import { RefreshControl } from 'react-native';
import {
  Container,
  ContentBox,
  Row
} from '../../config/globalStyles';
import { BoldText, RegularText } from '../../config/globalTexts';
import { queryClient } from '../../react-query/queryClient';

function MyBanList() {  
  const containerRef = useRef<any>(null);
  const [refreshing, setRefreshing] = useState(false);
  
  const refreshKeys = [
    ['getBannedMember'],
  ];
  
  const onRefresh = useCallback(() => {
    refreshKeys.map(key => {
      queryClient.refetchQueries(key);
    });
  }, [queryClient]);
  
  return (
    <Container
    ref={containerRef}
    refreshControl={
      <RefreshControl refreshing={refreshing} onRefresh={onRefresh} />
    }>
      <BoldText size={45} lineHeight={55} mb={20}>
        Pull Down Refresh
      </BoldText>

      <ContentBox>
          <RegularText size={26} lineHeight={38} color={theme.darkGray} align='center'>
            화면 아래로 당겨서 새로고침 하기
          </RegularText>
      </ContentBox>
    </Container>
  );
}

export default MyBanList;

*전체 코드중 일부 코드만 발췌하였습니다.*

 

 

코드설명

1.새로고침 기능 구현:

  • 화면을 당겨서 새로고침하는 기능은 RefreshControl 컴포넌트를 사용(rn에서 제공하는 컴포넌트)하여 구현했습니다. 이 컴포넌트는 refreshing 상태와 onRefresh 콜백 함수를 props로 받습니다.
  • refreshing 상태는 현재 새로고침 작업이 진행 중인지 여부를 나타내주고, useState 훅을 사용하여 상태를 관리됩니다.
  • onRefresh 함수는 useCallback 훅을 사용하여 성능 최적화를 위해 정의되었습니다. 이 함수는 queryClient.refetchQueries를 호출하여 데이터를 다시 가져오는 역할을 합니다.
  •   const refreshKeys = [
        ['getBannedMember'],
      ]; refreshKeys에다가는 새로고침을 할때 새로고침 되어야 하는 데이터를 불러오는 api의 쿼리키를 담아줍니다.

 

2.React Hooks 사용:

  • useRef 훅은 containerRef 변수를 통해 DOM 노드나 컴포넌트 인스턴스에 접근할 수 있습니다.
  • useState 훅은 refreshing 상태를 관리하며, 화면을 당겼을 때 새로고침이 진행 중인지를 판단합니다.
  • useCallback 훅은 onRefresh 함수를 메모이제이션하여 컴포넌트의 재랜더링 성능을 최적화합니다.

 

위와 같이 정리하면 아래 gif처럼 컴포넌트를 아래로 당기면

refreshKeys에 담겨있던 쿼리키에 해당하는 데이터들이

새로고침되어 화면에 나타납니다.👏🏻

Pull Down Refresh - 화면 아래로 당겨서 새로고침 하기 gif
Pull Down Refresh - 화면 아래로 당겨서 새로고침 하기 gif

반응형

'React Native' 카테고리의 다른 글

[RN] react-native UseEffect (()=> {},[]); 사용법  (0) 2024.06.25
[RN] react-native 댓글태그 지우기, Comments Tag remove, Back Space  (0) 2024.06.24
[RN] react-native 'Attempt to invoke virtual method ~' error (Android)  (0) 2024.06.10
[RN] react-native Random Array - 랜덤배열 만들기  (0) 2024.06.10
[RN] react-native Gradient -그라데이션  (2) 2024.06.07
'React Native' 카테고리의 다른 글
  • [RN] react-native UseEffect (()=> {},[]); 사용법
  • [RN] react-native 댓글태그 지우기, Comments Tag remove, Back Space
  • [RN] react-native 'Attempt to invoke virtual method ~' error (Android)
  • [RN] react-native Random Array - 랜덤배열 만들기
nicee
nicee
답을 찾아가는 과정이 즐거운 프론트엔드 개발자의 기록모음🧐
    반응형
  • nicee
    나의 개발일지
    nicee
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Project01 [Chat App]
      • React Native
      • Git
      • Program Setting
      • nicee-day
      • Study
        • C++
  • 블로그 메뉴

    • 링크

      • 🌳 git키우기
      • 📚 일상기록
    • 공지사항

    • 인기 글

    • 태그

      오블완
      c++
      React
      에러해결
      k직장인
      next.js
      티스토리챌린지
      k직장인일상
      불금
      firebase
      rn
      커피수혈
      APP
      error
      typescript
      React-native
      백준코딩테스트
      공부
      nextjs
      app build
      채팅앱
      리액트
      직장인짤
      빌드에러
      리액트네이티브
      앱개발
      타입스크립트
      Xcode
      Android
      IOS
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    nicee
    [RN] react-native Pull Down refresh
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.