0
私は反応してes6に新しく、検索フィールドを作成しようとしましたが、ユーザータイプがフィールドに最小3文字の場合はデータを取得します。フェッチapiを使用してajax呼び出しを行いますが、フェッチスニペットコードを実行しているとき、ブラウザでjsonデータを表示します。何が私のコードでやっている間違っている。データが取得された場合、検索リストにデータを挿入する方法受信したデータを一度更新する最良の方法は何かを知りたい。下のコードでは、アイテムと呼ばれる1つの小道具を持つサブコンポーネントを作成しました。これは、反応コンポーネントを再レンダリングする正しい方法です。ajax呼び出しからの応答後にreact es6コンポーネントを更新するにはどうすればよいですか?
import React from 'react';
import SearchList from "./searchlist"
class SearchField extends React.Component {
constructor(props) {
super(props);
this.state = {SearchText:null,SearchData:{},KeyState:false, items:[]};
};
GetLocationData(){
fetch("http://jsonplaceholder.typicode.com/albums")
.then((response) => {
return response.json() })
.then((json) => {
return json;
});
};
ChangeHandler(e){
e.preventDefault();
let isKeyUp = this.state.KeyState,
SearchFieldLength = e.target.value,
KeyLength = this.props.KeyRefresh;
if(!isKeyUp && SearchFieldLength.length > KeyLength){
let jsonData = this.GetLocationData();
//this.setState({SearchData:jsonData,KeyState:true})
console.log(jsonData);
}
};
componentDidMount(){
};
render() {
let PlaceholderText = this.props.PlaceHolderText;
return (
<div className="input-text-area">
<input type="text" placeholder={PlaceholderText} onChange={this.ChangeHandler.bind(this)} />
<SearchList items={this.state.items} />
</div>
);
}
}
export default SearchField;
現在、私は上記のコードでユーザー型の値を渡していませんが、ユーザー型のテキストも渡す必要がありますので、changeHandlerメソッドでのみgetLocationDataを作成する必要がありますか?私はjsonプレースホルダapiを使用していますが、それはユーザーの入力に基づいてフィルタリングされたデータになります – nancy