2016-07-25 2 views
0

Ich möchte einfach ein paar Arrays auf dem Bildschirm in meiner React Native iOS App drucken. Im Moment wird nichts auf dem Bildschirm angezeigt. console.logs nach der for-Schleife zeigen, dass die Arrays die Daten haben, die sie haben sollen, aber es wird nicht auf dem Bildschirm wiedergegeben. Wie rende ich erneut, nachdem der Fetch-Aufruf geladen wurde? Hier ist mein Code:Drucken von Arrays zum Anzeigen in React Native

'use unique' 
import React, { Component } from 'react'; 
import { 
    StyleSheet, 
    TouchableHighlight, 
    Text, 
    View, 
    ListView 
} from 'react-native'; 

import api from './apicall'; 

class APIRequest extends Component { 

    constructor() { 
    super(); 

    this.state = { 
     users: [], 
     id: [], 
     type: [] 
    } 
    } 

    componentWillMount() { 

     api.getData() 
     .then((res) => { 
      this.setState({ 
      users: res 
      }) 
      for (var i = 0; i < this.state.users.length; i++) { 
      this.state.id.push(this.state.users[i].id); 
      this.state.type.push(this.state.users[i].type); 
     }); 
    } 

    render() { 
    return(
     <View style={styles.container}> 
     <Text style={styles.buttonText}> 
      {this.state.id} 
     </Text> 
     </View> 
    ); 
    } 
} 

Antwort

1
this.state.id.push(this.state.users[i].id); 
this.state.type.push(this.state.users[i].type); 

Das ist der falsche Weg, um neuen Zustand zu setzen. Sie sollten Folgendes tun:

var idArray = []; 
var typeArray = []; 
for (var i = 0; i < this.state.users.length; i++) { 
    idArray.push(this.state.users[i].id); 
    typeArray.push(this.state.users[i].type); 
} 
this.setState({id: idArray});