我正在尝试将 React 项目中的一些 Firebase 代码更新为Firebase 最近发布的新模块化 Web v9 sdk。正在升级的项目使用react-firebase-hooks hook useCollectionData()
,它在更改为新的 sdk 时失败。当我尝试运行我的移植代码时,我在控制台中收到以下错误输出 3 次。
index.esm.js:101 Uncaught TypeError: v1.isEqual 不是函数
工作 web v8 代码的最小示例:
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} </>)
}
我尝试移植到 v9 导致错误:
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} </>)
}
我正在升级我的依赖项
"dependencies" : {
"firebase": "^7.20.0",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-firebase-hooks": "^2.2.0",
}
到
"dependencies" : {
"firebase": "^9.0.2",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-firebase-hooks": "^3.0.4",
}
这个 Firestore 文档包含我用来编写更新代码的示例。我还使用了这个 Firestore 文档来更好地了解collection()
.
谢谢你的帮助。
该阵营火力地堡鱼钩库似乎并不支持火力地堡模块化SDK,但(最后一个版本2021年4月)。您可能必须使用compat
允许使用旧的命名空间语法的版本,即使在v9.0.0+
并且没有 tree-shaking 的好处:
import firebase from 'firebase/compat/app'
import 'firebase/compat/firestore'
// import 'firebase/compat/[SERVICE_NAME]'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句