LandingPage.tsx 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import React, { useEffect } from 'react';
  2. import { useNavigate } from 'react-router-dom';
  3. import { alovaInstance } from '@/api/index'
  4. import { useRequest } from 'alova/client';
  5. import { DotLoading } from 'antd-mobile'
  6. type TItem = {
  7. "userId": number,
  8. "id": number,
  9. "title": string,
  10. "body": string
  11. }
  12. const LandingPage: React.FC = () => {
  13. const navigate = useNavigate();
  14. const { loading, data, error, send, update } = useRequest(
  15. alovaInstance.Get<TItem[]>('https://jsonplaceholder.typicode.com/posts', {
  16. cacheFor: 0
  17. }),
  18. {
  19. initialData: [],
  20. immediate: false
  21. }
  22. )
  23. const test = async ()=> {
  24. send()
  25. // const response = await alovaInstance.Get('https://jsonplaceholder.typicode.com/posts');
  26. // console.log(response,3333)
  27. }
  28. useEffect(()=> {
  29. test()
  30. }, [])
  31. if (loading) {
  32. return <DotLoading />;
  33. } else if (error) {
  34. return <div>{error.message}</div>;
  35. }
  36. return (
  37. <div className="flex flex-col items-center justify-center min-h-[calc(100vh-60px)]">
  38. <div className="text-center p-8">
  39. <div>{data.map(item => item.title)}</div>
  40. <h1 className="text-4xl sm:text-5xl font-extrabold text-slate-900 tracking-tight">
  41. Virtual Identity System
  42. </h1>
  43. <p className="mt-4 max-w-xl mx-auto text-lg text-slate-600">
  44. Your unified, verifiable online presence.
  45. </p>
  46. <div className="mt-8 flex flex-col sm:flex-row justify-center gap-4">
  47. <button
  48. onClick={() => navigate('/contact')}
  49. className="w-full sm:w-auto inline-flex items-center justify-center px-8 py-3 border border-transparent text-base font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-transform transform hover:scale-105"
  50. >
  51. Contact Homepage
  52. </button>
  53. <button
  54. onClick={() => navigate('/edit')}
  55. className="w-full sm:w-auto inline-flex items-center justify-center px-8 py-3 border border-slate-300 text-base font-medium rounded-md text-slate-700 bg-white hover:bg-slate-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 transition-transform transform hover:scale-105"
  56. >
  57. Certify My Page
  58. </button>
  59. </div>
  60. </div>
  61. </div>
  62. );
  63. };
  64. export default LandingPage;