错误:补水时出现错误。由于错误发生在 Suspense 边界之外,因此整个根将切换到客户端渲染

SOH*_*HAM 37 javascript reactjs next.js tailwind-css

我正在使用 Next.js 制作一个网站,每次都会显示上述错误。

不知道我的代码有什么问题。

const Login = () => {
  const [userMsg, setUserMsg] = useState("");
  const [email, setEmail] = useState("");
  const router=useRouter();

  const handleOnChangeEmail = (e) => {
    e.preventDefault();
    setUserMsg("");
    console.log("event", e);
    const email = e.target.value;
    setEmail(email);
  };
  const handleLoginWithEmail = (e) => {
    e.preventDefault();
    if (email) {
      if (IsEmail.validate(email)){
        router.push("/")
        
      }else{
        setUserMsg("Enter a valid email address")
      }
      
    } else {
      //show usermssg
      setUserMsg("Enter an email address");
    }
  };
  return (
    <div className="bg-[url('/static/bglg.jpg')] flex items-stretch flex-col h-screen w-full">
      <head>
        <title>NeoVest SignIn</title>
      </head>
      <header className="text-4xl px-10 py-2 font-black">
        <span className="text-indigo-700">NeoVest</span>
      </header>
      <div className="w-full max-w-xs m-auto bg-[#C9C9C9] rounded p-5 bg-opacity-50 border-gray-200">
        <header>
          <div className="text-indigo-700 font-black text-3xl py-2">
            <p>Sign In</p>
          </div>
        </header>
        <form className="py-5">
          <div>
            <label className="block mb-2 text-indigo-500" for="username">
              Email
            </label>
            <input
              className="w-full p-2 mb-6 text-indigo-700 border-b-2 border-indigo-500 outline-none focus:bg-gray-300"
              type="text"
              name="username"
              placeholder="Email Address"
              onChange={handleOnChangeEmail}
            />
            <div className="block mb-2 text-red-700">
              <p>{userMsg}</p>
            </div>
          </div>
          <div>
            <input
              className="w-full bg-indigo-700 hover:bg-pink-700 text-white font-bold py-2 px-4 mb-6 rounded"
              type="button"
              value="Submit"
              onClick={handleLoginWithEmail}
            />
          </div>
        </form>
      </div>
    </div>
  );
};
Run Code Online (Sandbox Code Playgroud)

显示的另一个错误是由于某些悬念边界导致 root 切换到客户端渲染:

错误:补水时出现错误。由于错误发生在 Suspense 边界之外,因此整个根将切换到客户端渲染。

如果该信息很重要,我也会使用 Tailwind。

小智 32

如果您查看控制台,您会看到一条警告。

Warning: validateDOMNesting(...): <head> cannot appear as a child of <div>
Run Code Online (Sandbox Code Playgroud)

因此,要解决此问题,您只需将 head 移出 div 并将其移至不同的更高组件即可。

  • 谢谢,工作得很好,我的错误是因为我把 &lt;a&gt; 放在 &lt;NextLink&gt; 中 (2认同)