Get initial api emoji

Create Folder emoji

index.jsx

import React from "react";

import PropTypes from 'prop-types';
import styles from './Emojis.module.css';

const Emojis = ({ emojisData }) => {
    return (
        <div className={styles.emojisGrid}>
            {emojisData.map((data ,index) => (
                <div>
                    {/* menghandle sebuah string menjadi HTML */}
                    <p 
                        dangerouslySetInnerHTML={{
                        // symbol ada sebuah emoji, codePoint(0 menjadi) menjadi hexcode
                        __html: `&#${data.symbol.codePointAt(0)}`
                    }} />
                </div>
            ))}
        </div>
    )
}

Emojis.propTypes = {
    emojisData: PropTypes.array
}

export default Emojis

Emoji.module.css

.emojisGrid{
    display: flex;
    flex-flow: row wrap;
    justify-content: flex-start;

    margin-top: 32px;
}

app.js

import React from 'react';
import { useState, useEffect } from 'react';
import axios from 'axios';

import Navbar from './Components/Navbar'
import Container from './Components/Container';
import Empty from './Components/Empty';
import Emojis from './Components/Emojis';

import './App.css';

function App() {
  const [emojisData, setEmojisData] = useState([]);
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState(false)


  useEffect(() => {
    async function fetchEmojis() {
      setLoading(true)

      try {
        const res = await axios.get('https://run.mocky.io/v3/fe964130-70d0-430f-b839-e55081423c28')
        setEmojisData(res.data)
        setLoading(false) 

      } catch (error) {
        console.error(error)

        setError(true)
        setLoading(false) 
      }

    }

    fetchEmojis()
  }, [])

  return (
    <>
      <Navbar />
      <Container>
        <h1>Hello</h1>

        {loading && <Empty text="Loading..." />}
        {error && <Empty text="Error..." />}
        {emojisData.length > 0 && <Emojis emojisData={emojisData} />}
      </Container>
      
    </>
  );
}

export default App;

Last updated

Was this helpful?