Skip to content

Commit c0a753d

Browse files
committed
Removed useRef usage
1 parent f872e67 commit c0a753d

1 file changed

Lines changed: 10 additions & 20 deletions

File tree

src/context/BookCacheContext.tsx

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createContext, useContext, useState, useEffect, useCallback, useMemo, useRef } from "react";
1+
import { createContext, useContext, useState, useEffect, useCallback, useMemo } from "react";
22
import type { BookData } from "../utils/bookData";
33
import { bookData as initialBookData } from "../utils/bookData";
44
import { convertDataSet } from "../utils/convertDataSet";
@@ -20,8 +20,6 @@ export function BookCacheProvider({ children }: { children: React.ReactNode }) {
2020
const [books, setBooks] = useState<Map<string, BookData>>(new Map());
2121
const [loading, setLoading] = useState(true);
2222

23-
const booksRef = useRef<Map<string, BookData>>(new Map());
24-
2523
const normalizeBook = useCallback(async (book: BookData | any): Promise<BookData> => {
2624
if (book.id && book.title && book.author && typeof book.publishedYear === 'number') {
2725
return {
@@ -82,7 +80,6 @@ export function BookCacheProvider({ children }: { children: React.ReactNode }) {
8280
}
8381
});
8482

85-
booksRef.current = bookMap;
8683
setBooks(bookMap);
8784
saveToStorage(bookMap);
8885
} catch (error) {
@@ -93,7 +90,6 @@ export function BookCacheProvider({ children }: { children: React.ReactNode }) {
9390
initialNormalized.forEach((book) => {
9491
bookMap.set(book.id, book);
9592
});
96-
booksRef.current = bookMap;
9793
setBooks(bookMap);
9894
saveToStorage(bookMap);
9995
} finally {
@@ -102,34 +98,30 @@ export function BookCacheProvider({ children }: { children: React.ReactNode }) {
10298
})();
10399
}, [normalizeBook, saveToStorage]);
104100

105-
useEffect(() => {
106-
booksRef.current = books;
107-
}, [books]);
108-
109101
const getBook = useCallback((bookId: string): BookData | undefined => {
110-
return booksRef.current.get(bookId);
111-
}, []);
102+
return books?.get(bookId);
103+
}, [books]);
112104

113105
const getBooks = useCallback((bookIds?: string[]): BookData[] => {
114-
const currentBooks = booksRef.current;
106+
const currentBooks = books;
115107
if (!bookIds) {
116108
return Array.from(currentBooks.values());
117109
}
118110
return bookIds
119111
.map((id) => currentBooks.get(id))
120112
.filter((book): book is BookData => book !== undefined);
121-
}, []);
113+
}, [books]);
122114

123115
const hasBook = useCallback((bookId: string): boolean => {
124-
return booksRef.current.has(bookId);
125-
}, []);
116+
return books.has(bookId);
117+
}, [books]);
126118

127119
const addBook = useCallback(async (book: BookData | any) => {
128120
const normalized = await normalizeBook(book);
129121
setBooks((prev) => {
130122
const updated = new Map(prev);
131123
updated.set(normalized.id, normalized);
132-
booksRef.current = updated;
124+
setBooks(updated);
133125
saveToStorage(updated);
134126
return updated;
135127
});
@@ -138,13 +130,12 @@ export function BookCacheProvider({ children }: { children: React.ReactNode }) {
138130
const addBooks = useCallback(async (booksToAdd: (BookData | any)[]): Promise<BookData[]> => {
139131
const normalizedPromises = booksToAdd.map((book) => normalizeBook(book));
140132
const normalizedBooks = await Promise.all(normalizedPromises);
141-
const updated = new Map(booksRef.current);
133+
const updated = new Map(books);
142134

143135
normalizedBooks.forEach((book) => {
144136
updated.set(book.id, book);
145137
});
146-
147-
booksRef.current = updated;
138+
148139
setBooks(updated);
149140
saveToStorage(updated);
150141

@@ -158,7 +149,6 @@ export function BookCacheProvider({ children }: { children: React.ReactNode }) {
158149
normalized.forEach((book) => {
159150
bookMap.set(book.id, book);
160151
});
161-
booksRef.current = bookMap;
162152
setBooks(bookMap);
163153
saveToStorage(bookMap);
164154
}, [normalizeBook, saveToStorage]);

0 commit comments

Comments
 (0)