@@ -25,9 +25,17 @@ export const UserTabs = ({
2525 const [ activeTab , setActiveTab ] = useState ( "posts" ) ;
2626 const userPosts = posts . filter ( ( post ) => post . type === "post" ) ;
2727 const userReplies = posts . filter ( ( post ) => post . type === "comment" ) ;
28- const observerTarget = useRef < HTMLDivElement > ( null ) ;
28+ const postsObserverTarget = useRef < HTMLDivElement > ( null ) ;
29+ const repliesObserverTarget = useRef < HTMLDivElement > ( null ) ;
2930
3031 useEffect ( ( ) => {
32+ const currentTarget =
33+ activeTab === "posts"
34+ ? postsObserverTarget . current
35+ : repliesObserverTarget . current ;
36+
37+ if ( ! currentTarget ) return ;
38+
3139 const observer = new IntersectionObserver (
3240 ( entries ) => {
3341 if ( entries [ 0 ] . isIntersecting && hasNextPage && ! isFetchingNextPage ) {
@@ -37,17 +45,12 @@ export const UserTabs = ({
3745 { threshold : 1.0 } ,
3846 ) ;
3947
40- const currentTarget = observerTarget . current ;
41- if ( currentTarget ) {
42- observer . observe ( currentTarget ) ;
43- }
48+ observer . observe ( currentTarget ) ;
4449
4550 return ( ) => {
46- if ( currentTarget ) {
47- observer . unobserve ( currentTarget ) ;
48- }
51+ observer . unobserve ( currentTarget ) ;
4952 } ;
50- } , [ fetchNextPage , hasNextPage , isFetchingNextPage ] ) ;
53+ } , [ activeTab , fetchNextPage , hasNextPage , isFetchingNextPage ] ) ;
5154
5255 return (
5356 < main >
@@ -75,7 +78,7 @@ export const UserTabs = ({
7578 < PostCard key = { post . id } post = { post } />
7679 ) ) }
7780 { hasNextPage && (
78- < div ref = { observerTarget } className = "p-4 text-center" >
81+ < div ref = { postsObserverTarget } className = "p-4 text-center" >
7982 { isFetchingNextPage ? (
8083 < div className = "text-muted-foreground text-sm" >
8184 Loading more...
@@ -93,7 +96,7 @@ export const UserTabs = ({
9396 < PostCard key = { post . id } post = { post } />
9497 ) ) }
9598 { hasNextPage && (
96- < div ref = { observerTarget } className = "p-4 text-center" >
99+ < div ref = { repliesObserverTarget } className = "p-4 text-center" >
97100 { isFetchingNextPage ? (
98101 < div className = "text-muted-foreground text-sm" >
99102 Loading more...
0 commit comments