Получить значение от обещания Firebase в реакции крюка

Решение будет зависеть от того, как организованы данные.

Данные о регулярной сетке

Если данные x и y уже определяют сетку, их можно легко преобразовать в четырехугольную сетку. Например,

#x  y  z
 4  1  3
 6  1  8
 8  1 -9
 4  2 10
 6  2 -1
 8  2 -8
 4  3  8
 6  3 -9
 8  3  0
 4  4 -1
 6  4 -8
 8  4  8 

может отображаться как contour , используя

import matplotlib.pyplot as plt
import numpy as np
x,y,z = np.loadtxt("data.txt", unpack=True)
plt.contour(x.reshape(4,3), y.reshape(4,3), z.reshape(4,3))

Произвольные данные

(a) В случае данные не живут на четырехсторонней сетке, можно интерполировать данные по сетке. Один из способов сделать это - сам matplotlib, используя matplotlib.mlab.griddata.

import matplotlib.mlab
xi = np.linspace(4, 8, 10)
yi = np.linspace(1, 4, 10)
zi = matplotlib.mlab.griddata(x, y, z, xi, yi, interp='linear')
plt.contour(xi, yi, zi)

(b) Наконец, можно конструировать контур полностью без использования четырехсторонней сетки. Это можно сделать, используя tricontour .

plt.tricontour(x,y,z)

Пример сравнения последних двух методов находится на странице matplotlib .

1
задан Josh Pittman 6 March 2019 в 13:28
поделиться

2 ответа

Вы имеете дело с асинхронными данными, вам нужно дождаться выполнения обещания, прежде чем оно сработает так, как вы ожидаете. Получение книг занимает некоторое время, поэтому есть задержка, пока книги не прибудут, и все, что у вас есть, - это обещание, что книги придут в конце концов.

Чтобы заставить это работать, вы можете попробовать:

useEffect(() => {
    firebase.getBooks().then(books => setBooks(books))
  }, []);
0
ответ дан Josh Pittman 6 March 2019 в 13:28
поделиться

SetBooks устанавливает ценность книг как обещание.

firebase.getBooks () возвращает обещание.

Так вот почему у вас в книгах есть обещание.

Что вы должны сделать

async function fetchMyAPI() {

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

useEffect(() => {
  fetchMyAPI();
}, []);
0
ответ дан Tal Avissar 6 March 2019 в 13:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: