私はまだ反応に慣れていますが、配列項目をオブジェクトではなくテキストとしてプッシュできない問題に遭遇したようです。今、私はjsonを取得し、その後の使用のために状態に格納するAPI呼び出しを持っています。最終目標はreturn文で順序付けられていないリストを生成することですが、配列にアイテムをプッシュしようとするたびに、文字列ではなくObjectとして出力されます。これをどうやって解決するのですか?リストにJSを押して項目を配列に返す
州およびAPIコール
class App extends Component {
constructor(props) {
super(props);
this.state = {
value: '',
data: {}, //filled by fetch data from API
imgData: {}, //filled by fetch image data from API
typeData: {}, //filled by fetch types data from API
types: {
typesArray: []
},
typeDataTotal: {},
specificTypeData: {}
};
}
handleChange(event) {
this.setState({value: event.target.value});
}
handleSubmit(event) {
//alert('Text field value is: ' + this.state.value);
var _this = this;
fetch('https://pokeapi.co/api/v2/pokemon/' + this.state.value + '/').then(function(response) {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' + response.status);
return;
}
// Examine the text in the response
response.json().then(function(data) {
console.log(data);
console.log(data.sprites.front_default);
_this.setState({data: data});
_this.setState({imgData: data.sprites});
_this.setState({typeData: data.types[0].type});
_this.setState({specificTypeData: data.types}); //this is the one I want to use for keys in the array
_this.setState({
typeDataTotal: Object.keys(data.types)
});
console.log(data.types[0].type.name); //shows item as string
console.log(data.types[1].type.name);
console.log(Object.keys(data.types).length);
});
}
}
render() {
var data = this.state.data;
var imgData = this.state.imgData;
var typeData = this.state.typeData;
var typeDataTotal = this.state.typeDataTotal;
var specificTypeData = this.state.specificTypeData;
var forms = [];
for (var key in typeDataTotal) {
console.log("obj." + key + " = " + specificTypeData[key].type.name);
forms.push(<formjs data={specificTypeData[key].type.name}/>);
console.log(forms);
}
return (
<div>{forms}</div>
);
}
}
コードを最新のバージョンに更新しました。私はconsole.logオブジェクト/キーのペア、彼らは文字列として表示されています。しかし、フォーム配列にプッシュしようとすると、[Object、Object]に戻ります。 – motoko96
申し訳ありませんが、気づいただけですが、 'render'メソッドで正確に' return'しているものは何ですか?そこに何かを返す必要があります –
私は返信しています