【发布时间】:2020-05-01 20:36:45
【问题描述】:
你好,我是 react 和 Firebase 的新手,我想了解为什么这个组件会不断重新渲染。 基本上我想要做的是获取数据并显示它并继续监听更改并更新数据而不重新加载页面
import React, { useState, useEffect } from 'react';
import firebase from '../util/firebase';
export default function Items() {
const [items, setItems] = useState();
useEffect(() => {
let data = [];
firebase
.firestore()
.collection('items')
.onSnapshot((snapshot) => {
let changes = snapshot.docChanges();
console.log(changes);
changes.forEach((change) => {
data.push(change.doc.data());
});
console.log(data);
});
setItems(data);
}, [items]);
return <div>{items && items.map((item) => <h1>{item.text}</h1>)}</div>;
}
【问题讨论】:
-
从效果依赖中移除项目,并在控制台记录数据后直接执行 setItems。
-
我这样做了,但是当我添加新项目时,组件会再次渲染以显示它
标签: reactjs