Reactの新機能です。現在、GitHub APIを使用してAJAX経由で検索結果を返し、その結果を画面に表示できる小さなプロジェクトを行っています。現在、私はforループを使用して応答データを反復処理し、そのデータを変数に保存していますが、これを行うにはより良い方法がありますが、私が新しく言ったように。私は返されたデータに状態を設定します。問題はsetStateにあり、変数全体にではなく変数に保存された最後の結果のみを返します。下に全コンポーネントが掲載されています。ヒントやアドバイスをいただければ幸いです。ありがとうございました!React setStateは、変数に保存されたリストの最後の項目を返すだけです
import axios from 'axios';
import * as React from 'react';
class User extends React.Component<any, any> {
constructor(props: any) {
super(props);
this.state = {
name: name,
id: '',
userInput: '',
obj: null
};
}
handleSubmit(e: any) {
axios.get('https://api.github.com/users/' + this.state.userInput + '/repos')
.then((response) => {
if (response.data.length > 0) {
console.log('success');
let data1 = JSON.stringify(response.data);
let result = JSON.parse(data1);
for (let key in result) {
let obj = result[key];
let test = obj.name;
console.log(test);
this.setState({
name: name,
id: result[0].id,
obj: test,
userInput: this.state.userInput
})
};
} else {
console.log('else is working');
}
})
.catch((error) => {
console.log('error ');
});
}
render() {
return (
<div>
<form>
<input type="text" onChange={this.handleUserInput.bind(this)} value={this.state.userInput} />
<h1>{this.state.userInput}</h1>
<button type="button" onClick={this.handleSubmit.bind(this)}>Submit</button>
</form>
<h1>Name : {this.state.name}</h1>
<h1> ID : {this.state.id}</h1>
<h1>OBJ : {this.state.obj}</h1>
</div>
);
}
}
export default User;
変数テストを慰めからの結果は、このコンソール出力 console output
を提供し、ここでwritten to page
示すように、しかし、それはthis.state.objによってOBJで設定されているときにのみ最後の項目が表示されています
APIのすべての結果をUIに表示しますか? – Panther