Reactjs 手动更改数据库中的条目时,react native和firebase出错
我正在从我的firebase数据库检索数据,该数据库工作正常,但当我手动更改数据库中的条目时,收到以下错误:Reactjs 手动更改数据库中的条目时,react native和firebase出错,reactjs,firebase,react-native,firebase-realtime-database,Reactjs,Firebase,React Native,Firebase Realtime Database,我正在从我的firebase数据库检索数据,该数据库工作正常,但当我手动更改数据库中的条目时,收到以下错误: Invariant Violation: Tried to get frame for out of range index NaN 方法拉取数据 listenForItems(itemsRef) { itemsRef.on('value', snapshot => { this.setState({ data: snapshot.val() }); console.l
Invariant Violation: Tried to get frame for out of range index NaN
方法拉取数据
listenForItems(itemsRef) {
itemsRef.on('value', snapshot => {
this.setState({ data: snapshot.val() });
console.log(this.state.data);
});
}
控制台正确显示从firebase检索到的最新更新对象
渲染方法
render() {
return (
<FlatList
data={this.state.data}
renderItem={({ item }) => (
<ListItem
title={item.title}
/>
)}
keyExtractor={(item, index) => index.toString()}
/>
);
}
render(){
返回(
(
)}
keyExtractor={(项,索引)=>index.toString()}
/>
);
}
DB中的项目以前是:
但是,当结构如下图所示时:
我收到了错误
注意:如果我将值更改回原来的值,错误将消失。有人能告诉我发生了什么事吗?如本文所述:
Firebase本机不支持阵列。如果存储阵列,则
实际上,它被存储为一个“对象”,以整数作为键名
总之:
// when we send this
['hello', 'world']
// Firebase stores this
{0: 'hello', 1: 'world'}
路标
是一个对象数组。由于Firebase本机不支持数组,它所做的是创建一个以整数索引作为键名的对象,以便在使用时表现得像数组
因此,通过将0
更改为test1
,您试图将字符串(test1
)设置为数组索引,它应该是一个数字,这就是为什么会出现超出范围的索引NaN
错误。如下所述:
Firebase本机不支持阵列。如果存储阵列,则
实际上,它被存储为一个“对象”,以整数作为键名
总之:
// when we send this
['hello', 'world']
// Firebase stores this
{0: 'hello', 1: 'world'}
路标
是一个对象数组。由于Firebase本机不支持数组,它所做的是创建一个以整数索引作为键名的对象,以便在使用时表现得像数组
因此,通过将0
更改为test1
,您试图将一个字符串(test1
)设置为数组索引,它应该是一个数字,这就是为什么会出现超出范围的索引NaN
错误