fix: hindari refetch saat mount pada halaman list pengumuman
Gunakan useRef untuk skip efek di render pertama sehingga refetch hanya dipanggil saat state update berubah (setelah CRUD), bukan setiap kali halaman dibuka.
This commit is contained in:
@@ -11,7 +11,7 @@ import { useTheme } from "@/providers/ThemeProvider";
|
||||
import { MaterialIcons } from "@expo/vector-icons";
|
||||
import { useInfiniteQuery } from "@tanstack/react-query";
|
||||
import { router } from "expo-router";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { useEffect, useMemo, useRef, useState } from "react";
|
||||
import { Pressable, RefreshControl, View, VirtualizedList } from "react-native";
|
||||
import { useSelector } from "react-redux";
|
||||
|
||||
@@ -27,6 +27,7 @@ export default function Announcement() {
|
||||
const { colors } = useTheme();
|
||||
const [search, setSearch] = useState('')
|
||||
const update = useSelector((state: any) => state.announcementUpdate)
|
||||
const isFirstRender = useRef(true)
|
||||
const { visible: guideVisible, dismiss: dismissGuide } = useGuide('announcement')
|
||||
const arrSkeleton = Array.from({ length: 5 }, (_, i) => i)
|
||||
|
||||
@@ -61,7 +62,10 @@ export default function Announcement() {
|
||||
},
|
||||
})
|
||||
|
||||
useEffect(() => { refetch() }, [update, refetch])
|
||||
useEffect(() => {
|
||||
if (isFirstRender.current) { isFirstRender.current = false; return }
|
||||
refetch()
|
||||
}, [update])
|
||||
|
||||
const flattenedData = useMemo(() => data?.pages.flat() || [], [data])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user