Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SSE_Lession
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wuhao
SSE_Lession
Commits
008b6ddf
Commit
008b6ddf
authored
May 20, 2024
by
wuhao
🎯
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
demo complete
parent
f2ca98db
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
41 additions
and
13 deletions
+41
-13
page.js
src/app/page.js
+41
-13
No files found.
src/app/page.js
View file @
008b6ddf
/* eslint-disable react-hooks/exhaustive-deps */
"use client"
;
"use client"
;
import
Image
from
"next/image"
;
import
Image
from
"next/image"
;
import
React
,
{
useState
,
useEffect
}
from
"react"
;
import
React
,
{
useState
,
useEffect
}
from
"react"
;
let
currentIndex
=
0
;
export
default
function
Home
()
{
export
default
function
Home
()
{
const
[
data
,
setData
]
=
useState
(
""
);
const
[
data
,
setData
]
=
useState
(
""
);
const
[
displayedData
,
setDisplayedData
]
=
useState
(
""
);
const
fetchData
=
async
()
=>
{
const
fetchData
=
async
()
=>
{
const
response
=
await
fetch
(
"/api"
);
const
response
=
await
fetch
(
"/api"
);
...
@@ -14,15 +18,25 @@ export default function Home() {
...
@@ -14,15 +18,25 @@ export default function Home() {
const
{
value
,
done
}
=
await
reader
.
read
();
const
{
value
,
done
}
=
await
reader
.
read
();
if
(
done
)
break
;
if
(
done
)
break
;
result
+=
decoder
.
decode
(
value
);
//拼接结果
result
+=
decoder
.
decode
(
value
);
//拼接结果
setData
(
setData
((
prevData
)
=>
`
${
prevData
}
${
decoder
.
decode
(
value
)}
`
);
(
prevData
)
=>
`
${
prevData
}
<br /> <span class='bg-clip-text text-transparent bg-gradient-to-r from-red-500 to-violet-500 text-base'>
${
decoder
.
decode
(
value
)}
</span> `
);
}
}
};
};
useEffect
(()
=>
{
if
(
!
data
||
!
data
[
currentIndex
])
return
;
const
intervalId
=
setInterval
(()
=>
{
if
(
currentIndex
<
data
.
length
)
{
setDisplayedData
((
prev
)
=>
prev
+
(
data
[
currentIndex
]
||
""
));
currentIndex
++
;
}
else
{
clearInterval
(
intervalId
);
}
},
50
);
// 控制打字速度,值越小速度越快
return
()
=>
clearInterval
(
intervalId
);
},
[
data
]);
return
(
return
(
<
main
className
=
"flex min-h-screen flex-col items-center justify-between p-24"
>
<
main
className
=
"flex min-h-screen flex-col items-center justify-between p-24"
>
<
div
className
=
"z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex"
>
<
div
className
=
"z-10 max-w-5xl w-full items-center justify-between font-mono text-sm lg:flex"
>
...
@@ -61,21 +75,35 @@ export default function Home() {
...
@@ -61,21 +75,35 @@ export default function Home() {
/>
/>
<
/div
>
<
/div
>
<
div
className
=
"mb-32
grid text-center lg:text-left w-full
"
>
<
div
className
=
"mb-32
flex text-center lg:text-left w-full gap-4
"
>
<
a
<
a
className
=
"group rounded-lg border border-transparent px-5 py-4 bg-white"
className
=
"group rounded-lg border border-transparent px-5 py-4 bg-white
flex-1
"
rel
=
"noopener noreferrer"
rel
=
"noopener noreferrer"
>
>
<
h2
className
=
{
`mb-3 text-2xl font-semibold`
}
>
<
h2
className
=
{
`mb-3 text-2xl font-semibold`
}
>
Docs
{
" "
}
直接渲染
{
" "
}
<
span
className
=
"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none"
>
<
span
className
=
"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none"
>
-&
gt
;
-&
gt
;
<
/span
>
<
/span
>
<
/h2
>
<
/h2
>
<
p
<
p
className
=
{
`m-0 text-sm bg-clip-text text-transparent bg-gradient-to-r from-orange-500 to-green-500 text-base`
}
>
{
data
||
"pending..."
}
<
/p
>
className
=
{
`m-0 text-sm opacity-50`
}
<
/a
>
dangerouslySetInnerHTML
=
{{
__html
:
data
}}
><
/p
>
<
a
className
=
"group rounded-lg border border-transparent px-5 py-4 bg-white flex-1"
rel
=
"noopener noreferrer"
>
<
h2
className
=
{
`mb-3 text-2xl font-semibold`
}
>
打字渲染
{
" "
}
<
span
className
=
"inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none"
>
-&
gt
;
<
/span
>
<
/h2
>
<
p
className
=
{
`m-0 text-sm `
}
>
<
span
className
=
"bg-clip-text text-transparent bg-gradient-to-r from-red-500 to-violet-500 text-base"
>
{
displayedData
||
"pending..."
}
<
/span
>
<
/p
>
<
/a
>
<
/a
>
<
/div
>
<
/div
>
<
/main
>
<
/main
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment