/cat-friends-react.js-app

It's a responsive app that displays cat cards. Users can search by name and can click see more information. (React Hooks)

Primary LanguageJavaScript

Cat friends

screenshot

Tech Stack


  • HTML
  • CSS
  • Javascript
  • React.js
  • React Hooks
  • ESlint
  • Prettier

Example Using Classes

import React, { Component } from "react";
import CardList from "../components/CardList/CardLists";
import SearchBox from "../components/SearchBox/SearchBox";
import Scroll from "../components/Scroll";
import "./App.css";

class App extends Component {
  constructor() {
    super();
    this.state = {
      robots: [],
      searchfield: "",
    };
  }

  componentDidMount() {
    fetch("https://jsonplaceholder.typicode.com/users")
      .then((response) => response.json())
      .then((users) => {this.setState({ robots: users })});
  }

  onSearchChange = (event) => {
    this.setState({ searchfield: event.target.value });
  };

  render() {
    const { robots, searchfield } = this.state;
    const filteredRobots = robots.filter((robot) => {
      return robot.name.toLowerCase().includes(searchfield.toLowerCase());
    });
    return !robots.length ? (
      <h1>Loading</h1>
    ) : (
      <div className="App">
        <h1>Cat Friends</h1>
        <SearchBox searchChange={this.onSearchChange} />
        <Scroll>
          <CardList robots={filteredRobots} />
        </Scroll>
      </div>
    );
  }
}

export default App;

Example Using Hooks

import React, { useState, useEffect } from "react";
import CardList from "../components/CardList/CardLists";
import SearchBox from "../components/SearchBox/SearchBox";
import Scroll from "../components/Scroll";
import "./App.css";

function App() {
  const [robots, setRobots] = useState([]);
  const [searchfield, setSearchfield] = useState("");

  useEffect(() => {
    // Update the document title using the browser API
    fetch("https://jsonplaceholder.typicode.com/users")
      .then((response) => response.json())
      .then((users) => {setRobots(users)});
  }, []);

  const onSearchChange = (event) => {
    setSearchfield(event.target.value);
  };

  const filteredRobots = robots.filter((robot) => {
    return robot.name.toLowerCase().includes(searchfield.toLowerCase());
  });
  return !robots.length ? (
    <h1>Loading</h1>
  ) : (
    <div className="App">
      <h1>Cat Friends</h1>
      <SearchBox searchChange={onSearchChange} />
      <Scroll>
        <CardList robots={filteredRobots} />
      </Scroll>
    </div>
  );
}

export default App;

External API used


Deploying React APP

Additional Resources

  1. Deploying React APP
  2. Document Hooks