我创建了一个小的nextjs页面使用WordPress的REST API,现在react-hydration-error错误显示此页面。我正在使用ReactHTML解析器npm。我如何解决这个错误。你可以请解决这个错误。
我代码:
import Image from 'next/image'
import React ,{Component}from 'react'
import Link from 'next/link';
import { BiCalendar } from "react-icons/bi";
import ReactHtmlParser from 'react-html-parser';
export default class Blog extends Component{
constructor(props){
super(props);
this.state={
data: props.bloglist,
isLoading: true,
dataLoaded: false,
};
}
render(){
if (!this.state.data) {
return null;
}
console.log(this.state.data)
return(
<>
<div className="container blog-section">
<div className='row'>
<h2>Latest Posts</h2>
</div>
<div className='row'>
{
this.state.data.map(((x,i) =>(
<div className='col-md-4 boxs text-center' key={i}>
<div className='bg-info'>
<img src={x.images.large} className='img-fluid'/>
<h3>{x.title.rendered} </h3>
<p className='shopping'><span><BiCalendar/> {x.date}</span> </p>
{/* <p dangerouslySetInnerHTML={{__html: x.excerpt.rendered}}></p><span><BiShoppingBag/> {x.slug}</span> */}
<p class='expert'>{ReactHtmlParser(x.excerpt.rendered)}</p>
<Link href={"/blog"+"/"+x.slug+"/"+x.id } passHref={true}><p className='readmore'><span>Readmore </span></p></Link>
</div>
</div>
)))
}
</div>
</div>
</>
)
}
}
我的原始问题:来自API的<p>If you have heard that there are ways to make money while shopping in the UAE and would lik</p>
的段落,所以我转换为html.
4条答案
按热度按时间sxissh061#
在我的情况下,我使用NextJS和我有一个下拉菜单与react-select,默认值是变化后,一个小的计算,这不像nextjs,这是我以前的代码:
因此,我将计算改为useEffect,并仅在计算该值时初始化react-select下拉列表,现在这是我当前的代码:
因此,基本上检查defaultValue或其他任何内容在html发送到NextJS中的客户端部分后是否没有更改。
gkl3eglg2#
我们使用组件来构建基于React的网站,这些组件是使用HTML标记制作的。不要嵌套相同的HTML元素是非常重要的。
例如:
以上是内部已包含
<a></a>
标记的徽标组件。在本例中,如果在另一个
<a>
标记内使用<a>
标记,则会出现React水合错误。因此,不要包含相同的HTML标记,这些标记隐藏在组件内部,以避免React水合错误。
2g32fytz3#
我遇到了这个错误,在我的例子中,我将
<p>
标记嵌套在另一个<p>
标记中,我使用排版(MUI v5)渲染文本,从
<Typography>
切换到<Box>
修复了错误。ifsvaxew4#
在Nextjs中,当SSR内容在浏览器中不匹配或第三方库改变了Nextjs中的状态时,会发生react-hydration-error。
检查你的代码,调试页面挂载后状态更新的地方,并解决这个bug