在ReactNative中为realm db查询实现ListView的正确方法是什么?

时间:2017-07-21 13:58:35

标签: javascript mobile react-native realm

我将在我的应用程序中使用RealmDB而不是AsyncStorage。对我来说更方便。但我在ListView组件中的渲染结果有问题。有两种方法可以在我的应用中获取数据: - 从api url获取:

return fetch('myurl')
                .then((response) => response.json())
                .then((responseJson) => {
                    let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
                    this.setState({

                        dataSource: ds.cloneWithRows(responseJson),
                    }
                })
                .catch((error) => {
                    console.error(error);
                });

- 从realmdb获取离线模式的数据。

RealmDB非常完美。从查询中编写和获取数据很容易。我可以在控制台中检查它,但我无法在我的ListView组件中呈现它。渲染提取结果照常工作。

    componentDidMount() {     
            let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
            let query=realm.objects('QueryObjects');
            this.setState({
                dataSource:ds.cloneWithRows(query)
            })

        }
render() {

    return (
        <View style={{flex: 1}}>

            <ListView
                dataSource={this.state.dataSource}
                renderRow={(rowData) =>
                    <View style={{flex: 1, flexDirection: 'row'}}>
                        <View
                            style={{flex:2}} >
                            <TouchableHighlight onPress={() => this.onLearnMore(rowData)}>
                            <Text
                            >{rowData.title}</Text>
                            </TouchableHighlight>
                        </View>
                        <View style={{flex:1, paddingLeft: 5}} >
                            <TouchableHighlight onPress={() => this.onLearnMore(rowData)}>
                            <Text>{rowData.price}</Text>
                            </TouchableHighlight>
                        </View>
                    </View>
                }
            />
        </View>
    );
}

这不起作用。但是,如果我尝试为领域查询调用map函数,我可以在控制台中看到每个查询元素的正确数据。

0 个答案:

没有答案