ios - React-native 无法访问 Parse 数据

标签 ios parse-platform react-native

我正在尝试使用 Parse 作为 Reactive Native 应用程序中 ListView 的数据提供者。我已按照有关订阅查询的 Parse 指南进行操作,但由于某些未知原因,数据源为空。我已经验证并将测试对象写入 Parse 工作正常。

似乎应该在 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;

enter image description here

最佳答案

我没有使用 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 知道什么时候是这种情况。

关于ios - React-native 无法访问 Parse 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415510/

相关文章:

iOS 设备在 Xcode 9.1 中未连接到 Internet

ios - 上传图像以解析数据库

react-native - 如何为 React Native 应用程序创建 Realm DB?

javascript - 如何在使用 react js 构建的网站中更改 Title 和 Description

ios - 当点击通知时,将 viewController 呈现在 rootViewController 上

ios - 在 iOS 中滤除蓝光

ios - UI 未在 SWRevealViewController viewWillAppear 上更新

reactjs - 奇怪的 TS2322(类型不可分配)错误

javascript - WebKit 用户内容 Controller :didReceiveScriptMessage: not getting called for iOS 13

ios - 从解析中获取数组到 TableView 中(Swift 2)