javascript - 在 React Hook 中从 firebase promise 获取值(value)

标签 javascript reactjs firebase react-hooks

Firebase.js

import config from "./firebaseConfig";
import app from "firebase/app";
import "firebase/firebase-firestore";

class Firebase {
  constructor() {
    app.initializeApp(config);
    this.db = app.firestore();
  }

  getBooks = () =>
    this.db
      .collection("books")
      .get()
      .then(docs => docs.forEach(doc => doc.data()))
      .catch(err => console.error(err));
}

export default new Firebase();

BookCardsContainer.js

import React, { useState, useEffect } from "react";
import BookCards from "./BookCards";
import firebase from "../../firebase";

const BookCardsContainer = () => {
  const [books, setBooks] = useState([]);

  useEffect(() => {
    setBooks(firebase.getBooks());
  }, []);

  console.log(books);

  return <div />;
};

export default BookCardsContainer;

如果我在 Promise 上使用 then,为什么控制台中有 Promise {} 而不是实际值?当我在 firebase.js 中使用 console.log() 时,我有实际数据。

最佳答案

SetBooks 将书籍的值(value)设定为 promise 。

firebase.getBooks() 返回一个 promise 。

所以这就是为什么你在书中有一个 promise 。

你应该做什么

async function fetchMyAPI() {

  const response = await firebase.getBooks();
  setBooks(response);
}

useEffect(() => {
  fetchMyAPI();
}, []);

关于javascript - 在 React Hook 中从 firebase promise 获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55011944/

相关文章:

reactjs - 无法访问主题的 Material-ui 中的 pxToRem 函数

javascript - 如何将数组更新为 firebase?

javascript - 选择 Reactjs 中的 Order Object 键

javascript - jQuery Accordion - 缺少什么?

javascript - 从全局浏览器范围访问 CommonJS 库中定义的变量

swift - 如何使用 Swift 在 Firebase 中存储自定义对象?

android - 无法解析符号 FirebaseVisionTextDetector

javascript - 使用 amCharts 执行事件监听器 clickGraphItem 时如何引用 JavaScript 对象数组中的变量

javascript - SmartyStreets:使用条件字段调整表单中已验证勾选的位置

reactjs - React 中的离线模式