20
loading...
This website collects cookies to deliver better user experience
function App() {
return (
// Provide the client to your App
<QueryClientProvider client={queryClient}>
<Todos />
</QueryClientProvider>
)
}
const query = useQuery('todos', getTodos)
index.css
, our QueryClientProvider
and the ReactQueryDevtools
which is a great utility for debugging our queries.import React from "react";
import ReactDOM from "react-dom";
import { QueryClient, QueryClientProvider } from "react-query";
import { ReactQueryDevtools } from "react-query/devtools";
import "./index.css"; // Optional
import App from "./App";
import reportWebVitals from "./reportWebVitals";
const queryClient = new QueryClient();
ReactDOM.render(
<React.StrictMode>
{/* Provider */}
<QueryClientProvider client={queryClient}>
{/* Dev tools */}
<ReactQueryDevtools initialIsOpen={false} />
<div className="bg-gray-800 h-screen">
<div className="container max-w-5xl mx-auto">
<App />
</div>
</div>
</QueryClientProvider>
</React.StrictMode>,
document.getElementById("root")
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
App.js
file.// App.js
import { useQuery } from "react-query";
import ColorChip from "./ColorChip";
import ComplementaryColors from "./ComplementaryColors";
function App() {
const { isSuccess, data } = useQuery("data", () =>
fetch("https://intent-shad-91.hasura.app/v1/graphql", {
method: "POST",
body: JSON.stringify({
query: `
{
color {
color
complementary_colors {
color
}
}
}
`,
}),
})
.then((res) => res.json())
.then((res) => res.data)
);
return (
<div>
{isSuccess && (
<div className="grid grid-cols-4 gap-4">
{data.color.map(({ color, complementary_colors }, key) => {
return (
<div
className="w-full h-64 rounded-sm flex flex-wrap space-between"
key={key}
style={{ backgroundColor: color }}
>
<ColorChip color={color} />
{complementary_colors && (
<ComplementaryColors colors={complementary_colors} />
)}
</div>
);
})}
</div>
)}
</div>
);
}
export default App;
// ColorChip.js
import React from "react";
export default function ColorChip({ color }) {
return (
<div className="flex items-center w-full">
<p className="font-bold text-center w-full">{color}</p>
</div>
);
}
// ComplementaryColors.js
import React from "react";
import ColorChip from "./ColorChip";
export default function ComplementaryColors({ colors }) {
return (
<div className="w-full grid grid-cols-3 h-24 self-end">
{colors.map(({ color }, key) => {
return (
<div
className="h-full items-center flex"
key={key}
style={{
backgroundColor: color,
}}
>
<ColorChip color={color} />
</div>
);
})}
</div>
);
}
const { isSuccess, data } = useQuery("data", () =>
fetch("https://intent-shad-91.hasura.app/v1/graphql", {
method: "POST",
body: JSON.stringify({
query: `
{
color {
color
complementary_colors {
color
}
}
}
`,
}),
})
.then((res) => res.json())
.then((res) => res.data)
);