如何解决在reactJS中从Firebase获取数据时无法在功能组件中设置State
useEffect(() => {
console.log("mounted");
all.db.ref("NewDonor").on("child_added",(data) => {
var DataFromDB = data.val();
state.donor.push(DataFromDB);
console.log(state.donor);
setState({
donor: DataFromDB,});
});
},[0]);
这是我的一些代码..我想从firebase中获取数据并添加到我的状态并在DOM上呈现, 但无法设置状态。显示错误, state.donor.map不是函数
解决方法
假设您的状态是一个数组
const [state,setState] = useState({ donor: [] });
这就是您要更新的方式。将任何现有状态传播到新阵列中,然后再从数据库传播新数据。这样可以确保state.donor
保留一个数组,以便以后进行映射。我也不认为[0]
是有效的依赖项数组,似乎您只想在组件挂载时才触发效果,这样一个空的依赖项数组就可以工作。
useEffect(() => {
all.db.ref("NewDonor").on("child_added",(data) => {
const DataFromDB = data.val();
setState(prevState => ({
donor: [...prevState,...DataFromDB],}));
});
},[]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。