0
fetchを使用してサーバーにapi呼び出しを行い、応答jsonファイルが応答の未定義の型を返しています。レスポンスをログに記録して画面に表示したいReact Native:フェッチapi呼び出しが不適切な応答を返す
それのための私のソースコード:しかし
'use strict';
import React, {Component} from 'react';
import {StyleSheet, View, Text, ListView, ScrollView} from 'react-native';
var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
class BusList extends Component {
constructor() {
super();
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {
dataSource: ds.cloneWithRows(['row 1', 'row 2']),
};
}
componentDidMount() {
this.loadJSONData();
}
loadJSONData() {
fetch('my_api!')
.then((response) => {
return response.json()
})
.then((responseJSON) => {
return this.setState({dataSource: this.state.dataSource.cloneWithRows(responseJSON)});
})
.catch((error) => {
console.warn(error);
});
}
renderRow(rowData) {
return(
<View>
<Text>{rowData.data}</Text>
</View>
);
}
render() {
return (
<View>
<ListView
dataSource={this.state.dataSource}
renderRow={(rowData) => <Text>{rowData}</Text>}
/>
</View>
);
}
}
module.exports = BusList;
、私はそれをログに記録しようとすると、私は次のようlog
を取得し、私を助けてください!
おかげで多くのことを、これは動作しますが、ここでの問題は、JSONオブジェクトを処理しています! ok入れ子になったjsonオブジェクトや、rowHasChanged関数をより適切に実装するために役立つリンクについては、簡単に説明してください。 –
dataSourceが変更されると、listViewのrenderRow APIが呼び出され、リストビューが更新されます。 – Codesingh
renderRow()でrenderRow(rowData)のパラメータを取得し、その後に '。'を使用してjsonデータを単純化できます。たとえば、キー名の詳細があり、その詳細キーの中に「id」、「address」などのキーがある場合は、rowData.detail.addressによって各行の「アドレス」を取得できます。 :) – Codesingh