Javascript 使用领域结果反应本机ListView
我正在尝试创建一个react本机ListView,它呈现Realm返回的结果。我一直在遵循关于react native的ListView和如何使用Realm的说明 但是,我总是遇到相同的错误:Javascript 使用领域结果反应本机ListView,javascript,react-native,realm,react-native-listview,Javascript,React Native,Realm,React Native Listview,我正在尝试创建一个react本机ListView,它呈现Realm返回的结果。我一直在遵循关于react native的ListView和如何使用Realm的说明 但是,我总是遇到相同的错误:对象作为React子对象无效(找到:[object Results])。如果要呈现子对象集合,请改用数组,或使用React附加组件中的createFragment(object)包装对象。检查“文本”的呈现方法。 据我从领域文档和其他文章中了解,Results对象的行为应该类似于javascript列表,因
对象作为React子对象无效(找到:[object Results])。如果要呈现子对象集合,请改用数组,或使用React附加组件中的createFragment(object)包装对象。检查“文本”的呈现方法。
据我从领域文档和其他文章中了解,Results对象的行为应该类似于javascript列表,因此应该被cloneWithRows方法接受
如果有人能告诉我我做错了什么,或者如何解决这个问题,我将不胜感激
另外,我试过react native的ListView和Realm的ListView,它们的行为方式都是一样的
import React, { Component } from 'react';
import {
StyleSheet,
View,
Text,
Navigator,
TouchableHighlight,
TouchableOpacity,
//ListView,
} from 'react-native';
import { ListView } from 'realm/react-native';
import realm from './myrealm'
class contextview extends Component {
getState() {
console.log("getInitialState");
var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
let pictures = [ realm.objects('picture').filtered('new == true') ];
console.log("pictures: " + pictures);
return {
//dataSource: ds.cloneWithRows(['row 1', 'row 2', 'row 3']),
dataSource: ds.cloneWithRows(pictures)
};
}
constructor(props)
{
super(props);
this.state = this.getState();
this.bindMethods();
}
render() {
return (
<ListView
dataSource={this.state.dataSource}
renderRow={(rowData) => <Text>{rowData}</Text>}
/>
);
}
}
import React,{Component}来自'React';
进口{
样式表,
看法
文本,
领航员,
触控高光,
可触摸不透明度,
//ListView,
}从“反应本机”;
从'realm/react native'导入{ListView};
从“/myrealm”导入领域
类contextview扩展组件{
getState(){
console.log(“getInitialState”);
var ds=新的ListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2});
让图片=[realm.objects('picture').filtered('new==true');
控制台日志(“图片:+图片”);
返回{
//数据源:ds.cloneWithRows(['row1','row2','row3']),
数据源:ds.cloneWithRows(图片)
};
}
建造师(道具)
{
超级(道具);
this.state=this.getState();
这个.bindMethods();
}
render(){
返回(
{rowData}}
/>
);
}
}
您在调用cloneWithRows
时是否遇到此错误?如果是这样,您可能需要在使用Realm.ListView
时,对Realm.Results
对象的快照调用cloneWithRows
。这是在领域示例中完成的。因此,或许可以尝试使用Realm.ListView
并将代码更改为:
let pictures = [ realm.objects('picture').filtered('new == true').snapshot() ];
我在渲染方法中找到了原因 而不是:
render() {
return (
<ListView
dataSource={this.state.dataSource}
renderRow={(rowData) => <Text>{rowData}</Text>}
/>
);
}
render(){
返回(
{rowData}}
/>
);
}
我应该这样做:
render() {
return (
<ListView
dataSource={this.state.dataSource}
renderRow={(rowData) => <Text>{rowData.path}</Text>}
/>
);
}
render(){
返回(
{rowData.path}
/>
);
}
由于
rowData
是一个对象,因此ReactNative无法在文本元素中呈现它,感谢您的建议。我尝试了一下,但没有改变任何东西,最终我找到了错误的原因。