Ios React native can';t访问解析数据
我正在尝试使用Ios React native can';t访问解析数据,ios,parse-platform,react-native,Ios,Parse Platform,React Native,我正在尝试使用Parse作为被动本机应用程序中ListView的数据提供程序。我已经遵循了关于订阅查询的解析指南,但是由于一些未知的原因,数据源是空的。我已经验证并编写了一个用于解析的测试对象,效果很好 似乎应该在getInitialState()之前调用observe(),还是我遗漏了什么 'use strict'; var React = require('react-native'); var Strings = require('./LocalizedStrings'); var Par
Parse
作为被动本机应用程序中ListView的数据提供程序。我已经遵循了关于订阅查询的解析指南,但是由于一些未知的原因,数据源是空的。我已经验证并编写了一个用于解析的测试对象,效果很好
似乎应该在getInitialState()之前调用observe(),还是我遗漏了什么
'use strict';
var React = require('react-native');
var Strings = require('./LocalizedStrings');
var Parse = require('parse').Parse;
var ParseReact = require('parse-react');
Parse.initialize("api_key_here", "api_key_here");
/*
var TestObject = Parse.Object.extend("TestObject");
var testObject = new TestObject();
testObject.save({foo: "bar"}).then(function(object) {
alert("yay! it worked");
});
*/
var {
View,
Text,
ListView,
StyleSheet
} = React;
var styles = StyleSheet.create({
mainContainer: {
flex: 1,
padding: 30,
marginTop: 65,
flexDirection: 'column',
justifyContent: 'center',
backgroundColor: '#fff'
},
title: {
marginBottom: 20,
fontSize: 22,
textAlign: 'center',
color: '#000'
},
});
var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}) // assumes immutable objects
var WorkoutList = React.createClass({
mixins: [ParseReact.Mixin],
observe: function() {
return {
workouts: (new Parse.Query("Workout")).descending("createdAt")
};
},
getInitialState: function() {
return {dataSource: ds.cloneWithRows(this.data.workouts)}
},
renderRow: function() {
return (<View><Text>Testing</Text></View>)
},
render: function() {
return (
<View style = {{flex: 1, flexDirection: 'column'}}>
{Strings.workoutsTabTitle}
<ListView
ref = "listview"
dataSource = {this.state.dataSource}
renderRow = {this.renderRow}
automaticallyAdjustContentInsets = {false}
keyboardDismissMode = "onDrag"
keyboardShouldPersistTaps = {true}
showsVerticalScrollIndicator = {true}
style = {styles.mainContainer}
/>
</View>
)
}
})
module.exports = WorkoutList;
“严格使用”;
var React=require('React-native');
变量字符串=require('./LocalizedStrings');
var Parse=require('Parse')。Parse;
var ParseReact=require('parse-react');
Parse.initialize(“这里是api_key_”,“这里是api_key_”);
/*
var TestObject=Parse.Object.extend(“TestObject”);
var testObject=新的testObject();
保存({foo:bar})。然后(函数(对象){
警惕(“耶!它成功了”);
});
*/
变量{
看法
文本,
ListView,
样式表
}=反应;
var styles=StyleSheet.create({
主容器:{
弹性:1,
填充:30,
玛金托普:65,
flexDirection:'列',
为内容辩护:“中心”,
背景颜色:“#fff”
},
标题:{
marginBottom:20,
尺寸:22,
textAlign:'中心',
颜色:“#000”
},
});
var ds=new ListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2})//假设对象是不可变的
var WorkoutList=React.createClass({
Mixin:[ParseReact.Mixin],
注意:函数(){
返回{
训练:(新建Parse.Query(“训练”)).descending(“createdAt”)
};
},
getInitialState:函数(){
返回{dataSource:ds.cloneWithRows(this.data.workouts)}
},
renderRow:函数(){
退货(测试)
},
render:function(){
返回(
{Strings.workoutsTabTitle}
)
}
})
module.exports=工作列表;
我没有使用ParseReact,而是使用Parse Rest API从Parse获取数据。以下代码是从componentDidMount调用的
fetch("https://api.parse.com/1/classes/Workout", {
headers: {
"X-Parse-Application-Id": "Your application Id",
"X-Parse-REST-API-Key": "Your API Key"
}
})
.then((response) => response.json())
.then((responseData) => {
this.setState({
dataSource: this.state.dataSource.cloneWithRows(responseData.results),
loaded: true,
})
})
.catch(function(error) {
console.log(error)
})
.done();
使用这种方法,您需要等待数据加载后再显示ListView。使用this.state.loaded可以知道何时会出现这种情况。这也适用
observe: function() {
return {
user: ParseReact.currentUser,
abc: (new Parse.Query('abc')).descending('createdAt')
};
},
getInitialState: function () {
return {
dataSource: new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}),
};
},
render: function() {
return (
<View style={styles.full}>
<ListView
dataSource={this.state.dataSource.cloneWithRows(this.data.abc)}
renderRow={this.renderRow}
/>
</View>
);
},
观察:函数(){
返回{
用户:ParseReact.currentUser,
abc:(new Parse.Query('abc')).descending('createdAt'))
};
},
getInitialState:函数(){
返回{
dataSource:new ListView.dataSource({rowHasChanged:(r1,r2)=>r1!==r2}),
};
},
render:function(){
返回(
);
},
希望有帮助!干杯 如果你不介意我问的话,为什么不使用parse react?