クラスとfetchの接続
指定されたランダムの使用
Request parameter
None
None
Response
Success 200
Field name Type Description
data Arrayはランダムに50枚の猫の写真をリストします.
main.js
new App(document.querySelector("#App"));
App.js
class App {
$target = null;
data = [];
constructor($target) {
this.$target = $target;
this.searchInput = new SearchInput({
$target,
onSearch: keyword => {
api.fetchCats(keyword).then(({ data }) => this.setState(data));
},
onRandom : ()=>{
api.randomCats().then(({data})=> console.log(data));
}
});
this.searchResult = new SearchResult({
$target,
initialData: this.data,
onClick: image => {
this.imageInfo.setState({
visible: true,
image
});
}
});
this.imageInfo = new ImageInfo({
$target,
data: {
visible: false,
image: null
}
});
}
setState(nextData) {
console.log(this);
this.data = nextData;
this.searchResult.setState(nextData);
}
}
重要な部分は増加したonRandom
部分です.api上で
api.randomCats()
を実行するロールapi.js
const API_ENDPOINT =
"https://oivhcpn8r9.execute-api.ap-northeast-2.amazonaws.com/dev";
const api = {
fetchCats: keyword => {
return fetch(`${API_ENDPOINT}/api/cats/search?q=${keyword}`).then(res =>
res.json()
);
},
randomCats: ()=>{
return fetch(`${API_ENDPOINT}/api/cats/random50`).then(res =>
res.json()
);
}
}
randomCats
部増加しました.searchInput.js
class SearchInput {
constructor({ $target, onSearch,onRandom }) {
const $searchInput = document.createElement("input");
this.$searchInput = $searchInput;
this.$searchInput.placeholder = "고양이를 검색해보세요.|";
$searchInput.className = "SearchInput";
$target.appendChild($searchInput);
$searchInput.addEventListener("keyup", e => {
if (e.keyCode === 13) {
onSearch(e.target.value);
onRandom();
}
});
console.log("SearchInput created.", this);
}
render() {}
}
次に、onRandom
が導入された部分によって実行され、結果が得られる.logで出力できます.対応する結果
Reference
この問題について(クラスとfetchの接続), 我々は、より多くの情報をここで見つけました https://velog.io/@khw970421/클래스와-fetch간-연결テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol