2017-04-19 10 views
2

コードが の場合モバイル画面にさまざまなプロパティを表示するにはどうすればよいですか? コンソールに印刷されたオブジェクトの配列を見ることができますが、各オブジェクトに含まれるプロパティを使用してモバイル画面に情報を表示することはできません。renderViewのrenderRow内の配列を反復する、React-Native

import React, { Component } from 'react'; 
import { AppRegistry, ListView, View, Text } from 'react-native'; 
import axios from 'axios'; 

export default class Component5 extends Component { 
    constructor() { 
    super(); 
    const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }); 
    this.state = { 
     userDataSource: ds, 
    }; 
    } 
    componentDidMount() { 
    this.fetchUsers(); 
    } 
    fetchUsers() { 
    axios.get('https://stageapi6.devmn.net/api/v1/forums/threads?topic_id=2418', { 
     headers: { 
     'client-id': '********' 
     } 
    }) 
    .then(response => this.setState({ userDataSource: this.state.userDataSource.cloneWithRows(response) })); 
    } 

    renderRow = (user) => { 
    console.log(user); // => [Object, Object, Object, Object .........] 

    return (
     <View> 
     {/* I need a way to iterate the bojects and display the properties inside teh Text tags, the code below doesn't work */} 
     <Text>{user.thread.num_posts}</Text> 
     <Text>{user.thread.topic_name}</Text> 
     <Text>{user.thread.name}</Text> 
     </View> 
    ); 
    } 
    render() { 
     return (
     <ListView 
      dataSource={this.state.userDataSource} 
      renderRow={(user) => this.renderRow(user.threads)} 
     /> 
    ); 
    } 
} 

AppRegistry.registerComponent('Component5',() => Component5); 

SCREENSHOT OF THE RETURNED ARRAY OF OBJECTS AND ITS PROPERTIES

答えて

2

あなたはuser配列を反復処理し、その場でJSXを構築する必要があります。以下のようなものを使用してください

renderRow = (user) => { 
return (
    <View> 
    { user.map(u => 
      (<View key={u.thread.id}> 
       <Text>{u.thread.num_posts}</Text> 
       <Text>{u.thread.topic_name}</Text> 
       <Text>{u.thread.name}</Text> 
       <View>)); 
    } 
    </View> 
); 
} 
+0

おかげで役立ちますが、残念ながらコンソールのエラーはまだ同じ '可能性のある未処理の約束拒絶(ID:0):ある はundefined'のプロパティ「マップ」を読み取ることができません。しかし、私はユーザーの反復を見ることができますが、シミュレータのプロパティを吐くことはできません –

0

私は前の回答にコメントすることはできませんが動作するはずです。あなたがCannot read property 'map' of undefineduserのパラメータをrenderRowに渡していることを示すようになっている上記のエラーが表示されている場合は、配列またはその空でないか、問題があります。その部分を解決することに集中してください。

fetchUsers関数のコードスニペットをBabel replに貼り付けました。これは私が見たものです。それはthisあなたがthis.state.userDataSourceのために参照されているように見えます

enter image description here

を参照するには、正しいthisではありません。

うまくいけば、これは助けを何とか

関連する問題