2 回答
TA贡献1943条经验 获得超7个赞
在示例代码片段中
useEffect(() => {
// snapshot - to check, if there is a change (like a new entry) in the database
db.collection("products").onSnapshot(snapshot => {
setProducts(snapshot.docs.map(doc => doc.data()))
})
}, []);
db.collection("products")管理自己的异步事件处理。当收到“快照”事件时,它会调用onSnapshot回调并更新状态。没有什么可以等待的,特别是因为没有返回值。
您还应该注意,useEffect钩子回调是 100%同步代码,它们不能被标记async和await任何代码调用。然而,他们可以调用async自己进行等待等的函数。
关于你标题中的问题
任何时候您想要从组件生命周期中发出任何副作用时,都可以使用useEffect挂钩,例如控制台日志记录状态、获取数据、调度操作。这主要是因为函数式 React 组件的整个函数体都被视为纯函数。with dependency 更类似于基于类的组件的、和生命周期方法。它们只是作为 React 组件生命周期的一部分被单独调用。useEffectcomponentDidMountcomponentDidUpdatecomponentWillUnmount
每当您需要获取数据时,请使用 、 或 或任何其他数据获取axios代码。fetch
TA贡献1895条经验 获得超3个赞
useEffect() - 它是一个钩子,允许我们在功能组件(如网络请求等)中执行副作用。
Axios - 它只是一个库,我们可以在其中发出 http 请求,例如 JavaScript 中的 fetch API,而且 axios 是基于 Promise 的。
添加回答
举报