【发布时间】:2019-06-27 18:15:35
【问题描述】:
我正在使用 firebase 数据库来存储数据,并且正在使用 useEffect 挂钩挂载数据。但它给了我缺少依赖数组的警告。
每当我传递依赖项时,它都会进入无限循环
const Channels = props => {
const [channels, setChannels] = useState([]);
const [firstLoad, setFirstLoad] = useState(false);
useEffect(() => {
let loadedChannels = [];
firebase
.database()
.ref("channels")
.on("child_added", snap => {
loadedChannels.push(snap.val());
setChannels(channels.concat(loadedChannels));
setFirstLoad(true);
});
}, []);
}
【问题讨论】:
-
您是否检查过触发 useEffect 时依赖关系没有改变?这样它将再次触发 useEffect 。在无限垂下
-
UseEffect 具有通道依赖关系,每当我使用 setChannels() 设置通道时,它内部都会不断变化。这就是为什么我不将频道作为依赖项传递。
-
But it gives me warning of missing dependency arrays缺少哪些依赖项? -
尝试使用基于回调的 setter,例如
setChannels(({ channels}) => ({channels: channels.concat(loadedChannels) }));(不太确定,这就是为什么没有给出答案)
标签: javascript reactjs react-hooks