нумерация страниц firestore начинается после( ) с recoil.js, Ошибка типа: Не удается назначить только для чтения свойство «dc» объекта «#»

# #javascript #reactjs #firebase #google-cloud-firestore #recoiljs

Вопрос:

 TypeError: Cannot assign to read only property 'dc' of object '#lt;tgt;'  

Чтобы реализовать разбиение на страницы, я использовал startAfter(lastVisible) метод в firebase и. recoil.js

Поэтому я сохранил lastVisible значение, используя useRecoilState() in recoil .

Но в процессе хранения lastVisible значения useRecoilState возникает вышеуказанная проблема.

Это мои приблизительные коды о пользовательском крючке.

 const [posts, setPosts] = useRecoilState(postsState);  const [lastVisiblePost, setLastVisiblePost] = useRecoilState(lastVisiblePostState);  ...    const fetchPosts = async () =gt; {  if (!posts.length) {  const response: any = await getInitialPosts({ orderBy, category });  const __posts = response?.data;  const __lastVisiblePost = response?.lastVisiblePost;   setPosts(__posts);  setLastVisiblePost(__lastVisiblePost);   return;  }   setPosts(posts);  setLastVisiblePost(lastVisiblePost);  };   const fetchMorePosts = async () =gt; {  if (lastVisiblePost) {  const response: any = await getMorePosts({ orderBy, category, lastVisiblePost });  const __posts = response?.data;  const __lastVisiblePost = response?.lastVisiblePost;   setPosts((prevPosts) =gt; [...prevPosts, ...__posts]);  setLastVisiblePost(__lastVisiblePost);  return;  }  };   ...   

Ниже приведены функции вызова API

 export const getInitialPosts = async ({ orderBy, category }: IgetPostParams) =gt; {  try {  const res = await dbService  .collection('posts')  .orderBy(orderBy, 'desc')  .where('category', '==', category)  .limit(CARD_LIMIT)  .get()   const data = res.docs.map((doc) =gt; ({  id: doc.id,  ...doc.data(),  }));   const lastVisiblePost = res.docs[res.docs.length - 1];   return { data, lastVisiblePost };  } catch (error) {  console.log(error);  return;  } };  export const getMorePosts = async ({ lastVisiblePost, category, orderBy }: IgetPostParams) =gt; {  try {  const res = await dbService  .collection('posts')  .where('category', '==', category)  .orderBy(orderBy, 'desc')  .startAfter(lastVisiblePost)  .limit(CARD_LIMIT)  .get();   const data = res.docs.map((doc) =gt; ({  id: doc.id,  ...doc.data(),  }));   const __lastVisiblePost = res.docs[res.docs.length - 1];   return { data, lastVisiblePost: __lastVisiblePost };  } catch (error) {  console.log(error);  return;  } };  

This is about recoil atom codes.

 export const lastVisiblePostState = atomlt;stringgt;({  key: 'posts/lastVisible',  default: '', });