クラスとfetchの接続


指定されたランダムの使用

  • GET/cats/random50
    Request parameter
    None
  • Query paramter
    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で出力できます.

    対応する結果