Javascript 使用领域结果反应本机ListView

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本机ListView,它呈现Realm返回的结果。我一直在遵循关于react native的ListView和如何使用Realm的说明

但是,我总是遇到相同的错误:
对象作为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无法在文本元素中呈现它

,感谢您的建议。我尝试了一下,但没有改变任何东西,最终我找到了错误的原因。