react linking gifted ios parse.com react-native

ios - linking - react-native-gifted-chat



React-native no puede acceder a los datos de Parse (2)

Esto también funciona

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> ); },

¡Espero eso ayude! ¡Aclamaciones!

Parse usar Parse como el proveedor de datos para un ListView en una aplicación Reactive Native. He seguido la guía de Parse con respecto a la suscripción a una consulta, pero por algún motivo desconocido, la fuente de datos está vacía. He verificado y escrito un objeto de prueba para que Parse funcione bien.

Parece que se debe llamar a observe () antes de getInitialState () o me falta algo?

''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;


No usé ParseReact, sino la API Parse Rest para obtener datos de Parse. El siguiente código se llama desde 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();

Con este enfoque, debe esperar hasta que se carguen los datos antes de mostrar ListView. Use this.state.loaded para saber cuándo es este el caso.