javascript – 使用Realm结果反应Native ListView

我正在尝试创建一个反应原生的ListView,它呈现Realm返回的结果.我一直在遵循我发现的有关react-native的ListView以及如何使用Realm的说明.

但是我总是得到同样的错误:对象作为React子对象无效(找到:[object Results]).如果您要渲染子集合,请使用数组,或使用React附加组件中的createFragment(object)包装对象.检查’Text’的render方法.

根据我对Realm文档和其他文章的理解,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>}
        />
      );
    }
}

解决方法:

调用cloneWithRows时是否收到此错误?如果是这样,您可能需要在使用Realm.ListView时在Realm.Results对象的快照上调用cloneWithRows.这是在Realm示例here中完成的.所以也许尝试使用Realm.ListView并将代码更改为:

let pictures = [ realm.objects('picture').filtered('new == true').snapshot() ];
上一篇:java – Android领域不正确的线程


下一篇:java – Android Realm文件大小