Estoy tratando de actualizar un código de Firebase en un proyecto de React al nuevo sdk modular web v9 que Firebase lanzó recientemente. El proyecto que se está actualizando usa el enlace useCollectionData() de react-firebase-hooks , que falla al cambiar al nuevo SDK. Obtengo el siguiente error en mi consola 3 veces cuando intento ejecutar mi código portado.
index.esm.js:101 TypeError no detectado: v1.isEqual no es una función
Un ejemplo mínimo de código web v8 en funcionamiento:
import firebase from 'firebase/app' import 'firebase/firestore' import { useCollectionData } from "react-firebase-hooks/firestore" firebase.initializeApp({ //config here }) const firestore = firebase.firestore(); function Foo() { const messagesRef = firestore.collection('messages') const query = messagesRef.orderBy('createdAt').limit(25) const [messages] = useCollectionData(query, { idField: 'id' }) return (<> {messages} </>) }Mi intento de portar a v9 que causa el error:
import { initializeApp } from "firebase/app" import { getFirestore } from "firebase/firestore" import { useCollectionData } from "react-firebase-hooks/firestore" const app = initializeApp({ //config here }) const db = getFirestore(app) function Foo() { const messagesRef = collection(db, "messages") const q = query(messagesRef, orderBy("createdAt"), limit(25)) const [messages] = useCollectionData(q, { idField: "id" }) return (<> {messages} </>) }Estoy actualizando mis dependencias de
"dependencies" : { "firebase": "^7.20.0", "react": "^16.13.1", "react-dom": "^16.13.1", "react-firebase-hooks": "^2.2.0", }a
"dependencies" : { "firebase": "^9.0.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-firebase-hooks": "^3.0.4", } Este documento de Firestore tiene ejemplos que usé para escribir mi código actualizado. También usé este documento de Firestore para comprender mejor los cambios en collection() .
Gracias por tu ayuda.
Se lanzó React Firebase Hooks v4 que es compatible con v9 y también requiere React 16.8.0 o posterior y Firebase v9.0.0 o posterior.
La biblioteca React Firebase Hooks no parece ser compatible con Firebase Modular SDK todavía (última versión de abril de 2021). Es posible que compat usar la versión compatible que permite usar una sintaxis de espacio de nombres más antigua incluso en v9.0.0+ y no tiene los beneficios de la sacudida del árbol:
import firebase from 'firebase/compat/app' import 'firebase/compat/firestore' // import 'firebase/compat/[SERVICE_NAME]'