为何使用realm-react加载Realm对象到FlatList需用扩展运算符?
问题原因
useQuery返回的是Realm的QueryResults对象,它是一个可迭代集合,但并非标准JavaScript数组。你使用的依赖版本(@realm/react@0.4.3 + realm@11.4.0)中,这个对象未完全实现FlatList的data属性所需的数组接口,导致FlatList无法正确识别并渲染数据。而你参考的示例大概率使用了更新版本的依赖,新版本已优化QueryResults的兼容性,支持直接传入FlatList。
解决方案
1. 升级依赖(推荐)
升级到较新的稳定版依赖,新版本已修复该兼容性问题:
{ "@realm/react": "^0.6.2", "realm": "^12.11.0" }
升级后直接使用data={locations}即可正常渲染。
2. 兼容旧版本的转换方法
如果暂时无法升级,可通过以下方式将QueryResults转为数组,效果和扩展运算符一致:
- 使用
Array.from():
data={Array.from(locations)}
- 调用QueryResults的
slice()方法:
data={locations.slice()}
3. 确认Realm配置正确性
检查你的AppRealm.ts是否正确注册了LocationRealm模型:
import { createRealmContext } from '@realm/react'; import { LocationRealm } from './models/LocationRealm'; const RealmContext = createRealmContext({ schema: [LocationRealm], // 确保模型已加入schema }); export default RealmContext;
内容的提问来源于stack exchange,提问作者Daniel Hignell
相关产品推荐
相关产品推荐

