如何使用Gatsby或React功能组件处理从数据库异步获取

Yingqi

我正在构建一个主要用React编写的Gatsby应用程序。我有一个LoggedIn组件,可以读取所有user已借用的并在网站上显示状态。我使用Firebase。我希望LoggedIn我可以组件中获取书籍。但是我不确定如何等待fetch方法完成。当我使用时async/await,它刚刚坏了,因为然后我的功能组件将返回aPromise而不是JSX:ELEMENT类型。我该如何处理?

import React, { useState } from 'react'
import {fetchUserBook} from "../../firebase/firebaseService"

const LoggedIn = ({user}) => {                //if I put async before user, 
//my LoggedIn component will return a promise, not a JSX component, which will break my code.
  const[books,setBooks] = useState([])
  fetchUserRestaurant(user.email).then((info) => setBooks(info))
    const renderloggedIn = () =>{
        return (
        <>
        <h1>Welcome, {user.email}.</h1>   // I hope that I can pass the "books" props here so that I can render it. 
// But usually the return statement is invoked before my fetchUserRestaurant method finishes. 
        </>
        )
    }
 

    return(
        renderloggedIn()
    )
}

export default LoggedIn
``
费兰·比雷(Ferran Buireu)

您只需要将asyncfetch函数放在一个useEffect钩子中,因为一旦加载DOM树,它将被触发。只需添加:

useEffect(()=>{
  fetchUserRestaurant(user.email).then((info) => setBooks(info))
}, [])

添加一个空数组(deps)将使其componentDidMount()像一样工作,因为在像您这样的无状态组件中,您不能使用componentDidMount()生命周期,而必须使用钩子。这将导致闪烁内容,直到您的请求填充您的useState钩子并显示为止您可以添加一个加载器或任何您想跳过的加载器。

其余代码似乎正确。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何实现异步任务以使用异步和等待从数据库中获取数据?

来自分类Dev

如何异步流式处理/分块数据库结果?

来自分类Dev

如何处理对MySQL数据库的异步调用

来自分类Dev

如何构建/处理数据库中的付费功能

来自分类Dev

我如何使用芹菜(异步)从以前存在的数据中从 django 模型(数据库)中获取数据

来自分类Dev

异步数据库库如何实现?

来自分类Dev

异步数据库库如何实现?

来自分类Dev

使用数据库包执行功能获取整行

来自分类Dev

使用PDO从数据库获取单个字段的功能

来自分类Dev

如何从功能组件获取数据?

来自分类Dev

如何使用Redux和React从数据库中获取单个数据元素?

来自分类Dev

如何使用React测试库测试组件的内部功能

来自分类Dev

使用递归的异步数据库调用

来自分类Dev

如何创建异步任务,在从数据库获取数据的同时加载背景

来自分类Dev

如何使用QuickCheck测试数据库相关功能?

来自分类Dev

如何使用从数据库中删除的删除功能

来自分类Dev

如何使用WordPress功能和数据库

来自分类Dev

如何使用react从后端数据库获取以显示在前端上?

来自分类Dev

跨数据库查询。如何正确使用跨数据库功能?

来自分类Dev

使用For循环遍历异步功能(数据库查询,Node.js)

来自分类Dev

如何使用foreach从数据库表中获取数据-

来自分类Dev

如何使用休眠模板从数据库获取数据

来自分类Dev

如何使用Code Igniter从MySQL数据库获取数据?

来自分类Dev

如何使用Node从MySQL数据库获取数据

来自分类Dev

如何使用参数从数据库获取数据

来自分类Dev

如何使用useState从数据库获取的数据?

来自分类Dev

如何使用php从mysql数据库中获取数据

来自分类Dev

如何使用sqoop获取源数据库的元数据

来自分类Dev

如何使用php date从mysql数据库获取数据?

Related 相关文章

  1. 1

    如何实现异步任务以使用异步和等待从数据库中获取数据?

  2. 2

    如何异步流式处理/分块数据库结果?

  3. 3

    如何处理对MySQL数据库的异步调用

  4. 4

    如何构建/处理数据库中的付费功能

  5. 5

    我如何使用芹菜(异步)从以前存在的数据中从 django 模型(数据库)中获取数据

  6. 6

    异步数据库库如何实现?

  7. 7

    异步数据库库如何实现?

  8. 8

    使用数据库包执行功能获取整行

  9. 9

    使用PDO从数据库获取单个字段的功能

  10. 10

    如何从功能组件获取数据?

  11. 11

    如何使用Redux和React从数据库中获取单个数据元素?

  12. 12

    如何使用React测试库测试组件的内部功能

  13. 13

    使用递归的异步数据库调用

  14. 14

    如何创建异步任务,在从数据库获取数据的同时加载背景

  15. 15

    如何使用QuickCheck测试数据库相关功能?

  16. 16

    如何使用从数据库中删除的删除功能

  17. 17

    如何使用WordPress功能和数据库

  18. 18

    如何使用react从后端数据库获取以显示在前端上?

  19. 19

    跨数据库查询。如何正确使用跨数据库功能?

  20. 20

    使用For循环遍历异步功能(数据库查询,Node.js)

  21. 21

    如何使用foreach从数据库表中获取数据-

  22. 22

    如何使用休眠模板从数据库获取数据

  23. 23

    如何使用Code Igniter从MySQL数据库获取数据?

  24. 24

    如何使用Node从MySQL数据库获取数据

  25. 25

    如何使用参数从数据库获取数据

  26. 26

    如何使用useState从数据库获取的数据?

  27. 27

    如何使用php从mysql数据库中获取数据

  28. 28

    如何使用sqoop获取源数据库的元数据

  29. 29

    如何使用php date从mysql数据库获取数据?

热门标签

归档