add tanstack/react-query

This commit is contained in:
smanylov
2025-12-02 17:11:53 +07:00
parent d89cc35fca
commit 6d47fa7fbb
15 changed files with 209 additions and 94 deletions
+1 -3
View File
@@ -1,9 +1,7 @@
'use client'
import { testConnect } from '@/app/lib/action';
async function clickHandler() {
testConnect();
console.log('click')
}
export default function ButtonTest() {
+30 -9
View File
@@ -3,12 +3,23 @@
import { useState, useRef } from 'react';
import { useClickOutside } from '@/app/hooks/useClickOutside';
import Link from 'next/link';
import { useDataContext } from '@/app/context/data-context';
import { getUserData } from '@/app/lib/action';
import { useQuery } from '@tanstack/react-query';
export default function UserMenuButton() {
const [isOpen, setIsOpen] = useState(false);
const menuRef = useRef<HTMLDivElement | null>(null);
const { dataContext } = useDataContext()
const {
data: userData,
isLoading,
isError,
error
} = useQuery({
queryKey: ['userData'],
queryFn: () => {
return getUserData();
}
})
useClickOutside(menuRef, () => {
@@ -17,7 +28,6 @@ export default function UserMenuButton() {
const handleButtonClick = () => {
if (!isOpen) {
console.log(dataContext);
setIsOpen(true);
} else {
setIsOpen(false);
@@ -30,18 +40,29 @@ export default function UserMenuButton() {
onClick={handleButtonClick}
ref={menuRef}
>
<div className="user-avatar" id="user-menu-btn" title="Валерка">
User
<div
className="user-avatar"
id="user-menu-btn"
title={userData?.fullName ? userData.fullName : ''}
>
{userData?.fullName ? userData.fullName : ''}
</div>
<div className={`user-dropdown ${isOpen ? 'show' : ''}`} id="user-dropdown">
<div className="user-info-header">
<div className="user-avatar-large">User</div>
<div className="user-avatar-large">
{userData?.fullName ? userData.fullName : ''}
</div>
<div className="user-details">
<div className="user-name">Валерка</div>
<div className="user-email">va@no-copy.ru</div>
<div className="user-name">
{userData?.fullName ? userData.fullName : ''}
</div>
<div className="user-email">
{userData?.email ? userData.email : ''}
</div>
<div className="user-subscription">
<span className="subscription-badge">
СТАРТ</span>
{userData?.subscriptionType ? userData.subscriptionType : ''}
</span>
</div>
</div>
</div>
+30
View File
@@ -0,0 +1,30 @@
'use client';
import { useQuery } from '@tanstack/react-query';
import { getUserData } from '@/app/lib/action';
export default function HomePage() {
const {
data: userData,
isLoading,
isError,
error,
} = useQuery({
queryKey: ['userData'],
queryFn: () => {
return getUserData();
},
});
if (isLoading) return <div>Loading...</div>;
if (isError) return <div>Error: {error.message}</div>;
return (
<div>
<h1>user email</h1>
<span>
{userData.email}
</span>
</div>
);
}