Jalankan fungsi async pada React return
P粉545682500
P粉545682500 2023-09-07 17:31:08
0
1
429

Saya cuba memaparkan nama pengguna daripada pangkalan data Firebase dalam fungsi React return.

Saya mempunyai fungsi yang dipanggilgetUserNameyang mengambil nama pengguna daripada pangkalan data dan mengembalikannya.

const getUserName = async () => { try { const docRef = doc(db, "users/" + auth.currentUser?.uid); const userDocument = await getDoc(docRef); const userData = userDocument.data() as UserData; const userName = userData.name.split(' ')[0]; return userName; } catch (error) { console.error(error) return "Failed to Retrieve UserName"; }; }

Kemudian saya cuba memaparkannya dalam pengembalian komponen tindak balas.

return ( 
Hi, {getUserName()}!
)

Tetapi saya mendapat ralat ini:类型“Promise ”不可分配给类型“ReactNode”。ts(2322) const getUserName: () => Promise

Tidak pasti apa salah saya di sini. Saya menggunakan TypeScript, jadi adakah saya perlu menentukan jenis di suatu tempat?

P粉545682500
P粉545682500

membalas semua (1)
P粉009186469

Mesej ralat sangat jelas. Untuk membetulkannya, anda boleh mengubah suaigetUserName函数以使用useState挂钩来存储用户名dan mengemas kini secara tak segerak.

import { useState, useEffect } from 'react'; const MyComponent = () => { const [userName, setUserName] = useState(''); useEffect(() => { const getUserName = async () => { try { // some code here setUserName(userName); } catch (error) { console.error(error); setUserName("Failed to Retrieve UserName"); } }; getUserName(); }, []); return ( 
Hi, {userName}!
); };
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!