mirror of
https://github.com/hanzoai/next.js.git
synced 2026-10-30 14:46:38 +00:00
61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
"use client";
|
|
import { useGetQuotesQuery } from "@/lib/features/quotes/quotesApiSlice";
|
|
import { useState } from "react";
|
|
import styles from "./Quotes.module.css";
|
|
|
|
const options = [5, 10, 20, 30];
|
|
|
|
export const Quotes = () => {
|
|
const [numberOfQuotes, setNumberOfQuotes] = useState(10);
|
|
// Using a query hook automatically fetches data and returns query values
|
|
const { data, isError, isLoading, isSuccess } =
|
|
useGetQuotesQuery(numberOfQuotes);
|
|
|
|
if (isError) {
|
|
return (
|
|
<div>
|
|
<h1>There was an error!!!</h1>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
if (isLoading) {
|
|
return (
|
|
<div>
|
|
<h1>Loading...</h1>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
if (isSuccess) {
|
|
return (
|
|
<div className={styles.container}>
|
|
<h3>Select the Quantity of Quotes to Fetch:</h3>
|
|
<select
|
|
className={styles.select}
|
|
value={numberOfQuotes}
|
|
onChange={(e) => {
|
|
setNumberOfQuotes(Number(e.target.value));
|
|
}}
|
|
>
|
|
{options.map((option) => (
|
|
<option key={option} value={option}>
|
|
{option}
|
|
</option>
|
|
))}
|
|
</select>
|
|
{data.quotes.map(({ author, quote, id }) => (
|
|
<blockquote key={id}>
|
|
“{quote}”
|
|
<footer>
|
|
<cite>{author}</cite>
|
|
</footer>
|
|
</blockquote>
|
|
))}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return null;
|
|
};
|