Ionic 离子/React第9:5行:应为赋值或函数调用,但看到的却是表达式@typescript-eslint/no-unused-expressions

ao218c7q  于 2022-12-09  发布在  Ionic
关注(0)|答案(2)|浏览(156)

当我试图用钩子从firebase获取用户数据时。

import { useEffect, useState } from 'react';
import { firestore } from '../../'
import { getAuth } from 'firebase/auth';
export function useUserDetails() {
  const db = firestore;
  const userid = getAuth().currentUser?.uid
  const [userDetails, setuserDetails] = useState<unknown>([])
  useEffect(() => {
    (async () => {
     const doc = await db.collection("Users").doc(userid).get();
      setuserDetails(({...doc.data(), id: doc.id}))
  })}, [])
  return [userDetails]
}

react向我返回一个错误:第9行:5:预期为赋值或函数调用,但看到的却是表达式@typescript-eslint/no-unused-expressions。

rwqw0loc

rwqw0loc1#

你需要在useEffect中调用匿名函数。看起来你在setuserDetails调用中有一组额外的括号。另外,doc.data()doc.id都正确吗?

useEffect(() => {
  (async () => {
    const doc = await db.collection("Users").doc(userid).get();
    // removed parens
    setuserDetails({...doc.data(), id: doc.id}));
  // added parens
  })();
}, []);
3df52oht

3df52oht2#

修正:这是正确的使用效果的方式

useEffect(() => {
    (async function() {
      const doc = await db.collection("Users").doc(userid).get();
      setuserDetails(({...doc.data(), id: doc.id}))
    })();
}, []);

相关问题