Skip to content

Commit 5e9cc9d

Browse files
outsource use effect
1 parent 199e67f commit 5e9cc9d

File tree

3 files changed

+32
-13
lines changed

3 files changed

+32
-13
lines changed

src/components/quote/Quote.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useCallback, useContext, useEffect, useState } from 'react'
1+
import { useCallback, useContext, useState } from 'react'
22
import { ContextContentLoaded } from '@/context/ContextContentLoaded'
33
import { ContextQuote } from '@/context/ContextQuote'
44
import { QuoteType } from '@/types/types'

src/components/users/Users.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useCallback, useContext, useEffect, useState } from 'react'
1+
import { useCallback, useContext, useState } from 'react'
22
import {
33
Accordion,
44
AccordionContent,
@@ -18,7 +18,7 @@ import { ContextContentLoaded } from '@/context/ContextContentLoaded'
1818
import { ContextTopUsers } from '@/context/ContextTopUsers'
1919
import { UsersType } from '@/types/types'
2020
import { fetchUsers } from '@/api/fetchUsers'
21-
import { getItemFromSessionStorage } from '@/utils/getItemFromSessionStorage'
21+
import { useLoadUsers } from '@/hooks/useLoadUsers'
2222
import { useScreenWidth } from '@/hooks/useScreenWidth'
2323

2424
const Users = () => {
@@ -51,16 +51,7 @@ const Users = () => {
5151
setIsLoading(false)
5252
}, [isLoading, setContentLoaded])
5353

54-
useEffect(() => {
55-
const parsedStorageData = getItemFromSessionStorage()
56-
setUsers(parsedStorageData?.users || [])
57-
58-
if (!parsedStorageData?.users?.length) {
59-
loadUsers()
60-
} else {
61-
setContentLoaded((prev) => ({ ...prev, users: true }))
62-
}
63-
}, [loadUsers, setContentLoaded])
54+
useLoadUsers(loadUsers, setContentLoaded, setUsers)
6455

6556
return (
6657
<section

src/hooks/useLoadUsers.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
'use client'
2+
3+
import { Dispatch, SetStateAction, useEffect } from 'react'
4+
import { UsersType } from '@/types/types'
5+
import { getItemFromSessionStorage } from '@/utils/getItemFromSessionStorage'
6+
7+
export const useLoadUsers = (
8+
loadUsers: () => Promise<void>,
9+
setContentLoaded: Dispatch<
10+
SetStateAction<{
11+
posts: boolean
12+
quote: boolean
13+
users: boolean
14+
}>
15+
>,
16+
setUsers: Dispatch<SetStateAction<UsersType[]>>
17+
) => {
18+
useEffect(() => {
19+
const parsedStorageData = getItemFromSessionStorage()
20+
setUsers(parsedStorageData?.users || [])
21+
22+
if (!parsedStorageData?.users?.length) {
23+
loadUsers()
24+
} else {
25+
setContentLoaded((prev) => ({ ...prev, users: true }))
26+
}
27+
}, [loadUsers, setContentLoaded, setUsers])
28+
}

0 commit comments

Comments
 (0)