我在Next.js 13中编程时遇到了这个问题。我真的很感激任何帮助或建议=),以下是文件:
键入文本.tsx
import React from "react";
export function useTypedText(text: string, speed: number, delayTime?: number) {
const [textState, setTextState] = React.useState("")
const chars = text.split("")
let interval = speed
if(textState.length === 0 && delayTime)
interval = speed + delayTime
React.useEffect(() => {
const timer = setTimeout(() => {
setTextState((prevText) => {
if (prevText.length !== chars.length) {
const newText = prevText.concat(chars[prevText.length])
return newText
}
return prevText
})
}, interval)
return () => clearTimeout(timer)
})
return textState
}
主标题.tsx:
import React from 'react';
import { useTypedText } from '../typingtext';
export function VMainHeader() {
return (
<div>
<h1>
{useTypedText("Hello everyone!", 50)}
<br/>
{useTypedText("I'm Diego.", 50, 200)}
</h1>
<h2>
{useTypedText("Welcome", 30, 350)}
</h2>
</div>
)
}
首页.tsx
import React from "react"
import { VMainHeader } from "./mainheader"
export default function VHome(){
return(
<div>
<VMainHeader />
</div>
)
}
我期待着知道发生了什么,因为我已经尝试与
import { useState, useEffect } from "react";
在typingtext.tsx文件中,但它不起作用
2条答案
按热度按时间8cdiaqws1#
我假设你尝试创建一个自定义钩子
useTypedText
。不要在return中使用。你可能想把它改为一个组件,把它重命名为TypedText,并且你至少需要把状态 Package 在framgent中。hc2pp10m2#
好的,我已经修复了这个错误,所以我现在写这个来帮助像我这样的人,因为我认为这是Next.js 13或idk的一个新特性,我是Next xD中的noob。
当我在mainheader.tsx文件的顶部写入**“使用客户端”**时,它对我很有效:
非常感谢那些试图帮助我的人〈3。