首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在Next.js中使用表会引发水化错误?

为什么在Next.js中使用表会引发水化错误?
EN

Stack Overflow用户
提问于 2022-09-29 05:07:01
回答 1查看 109关注 0票数 2

在这段代码中,我在使用标记时遇到了问题。当我使用tr标记时,错误occurs.It表示未处理的运行时错误:水合失败,因为初始UI与服务器上呈现的不匹配。

代码语言:javascript
复制
import React from 'react'
import {useState} from 'react'


const port = () => {
  return (
    <div className="ml-14">
      <div className="profile">
        <h1 className="mt-5 font-bold">Nasvirat</h1>
        <p className="mt-5">total balance : </p>
      </div>
      <div className="portfolio">
        <h2 className="mt-7">Holding</h2>

        <table>
        <tr>
          <th>Firstname</th>
          <th>Lastname</th>
        </tr>
        <tr>
          <td>Peter</td>
          <td>Griffin</td>
        </tr>
        <tr>
          <td>Lois</td>
          <td>Griffin</td>
        </tr>
        </table>
      </div>
    </div>
  )
}

export default port

你知道为什么会发生这种事吗?如何解决。

EN

回答 1

Stack Overflow用户

发布于 2022-10-01 11:15:34

这是一个公开发行Next.js回购。问题在于,您没有<tbody><thead>包装您的行。

虽然它们没有指定给必填以正确地呈现表,但next.js不知何故无法识别这一点。

我的假设是,由于这一点,在服务器和客户端上运行的代码存在差异。

尝试添加以下内容:

代码语言:javascript
复制
        <table>
        <tbody>
        <tr>
          <th>Firstname</th>
          <th>Lastname</th>
        </tr>
        <tr>
          <td>Peter</td>
          <td>Griffin</td>
        </tr>
        <tr>
          <td>Lois</td>
          <td>Griffin</td>
        </tr>
        </tbody>
        </table>

值得注意的是,浏览器在table 自动中添加了一个自动。因此,即使您跳过它,它也将在DOM代码中结束。正如答案中提到的,这是针对较旧的HTML版本的。这是一个演示。检查代码并将其与呈现的实际DOM进行比较。

我猜next.js在服务器端生成时默认不会添加tbody。这就是造成这种错配的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73890509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档