问题描述:

使用umi进行服务端渲染报错  Warning: Did not expect server HTML to contain a <div> in <div>.

解决方法:


import React, { useEffect, useLayoutEffect } from 'react'
React.useLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect

如果你用到了 Ant Motion (OverPack,QueueAnim)入场动画,可能还是会报错

解决方案:

1. 把 "rc-queue-anim" 和 "rc-scroll-anim"  升级或降级到以下版本(其他版本可能还是有问题)

"umi": "^3.5.30",
"rc-queue-anim": "1.8.5",
"rc-scroll-anim": "^2.7.6",

2. 声明一个 useIsClient 来判断是不是浏览器访问

import React, { useState, useEffect } from 'react'function useIsClient () {const [isClient, setIsClient] = useState(false)useEffect(() => setIsClient(true), [])return isClient
}export default useIsClient

3. 在使用到入场动画  (OverPack,QueueAnim)的文件内引入并使用,使用方法如下

import React from 'react'
import QueueAnim from 'rc-queue-anim'
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack'
import useIsClient from '@hooks/useIsClient'function Demo ({ id }) {// isClient 为true的时候说明是服务端渲染,false 为客户端渲染(浏览器)const isClient = useIsClient()// 由于使用 QueueAnim,OverPack 的时候是有动画的时候才会去生成 dom,// 但是服务端渲染的时候不需要动画直接生成 dom 即可,// 通过控制 QueueAnim 和 OverPack 的 appear 参数,// 让他服务端渲染的时候去除动画直接生成 domreturn (<OverPackappear={ isClient }><QueueAnimtype="bottom"appear={ isClient }><div key={1}></h4><div key={2}></div></QueueAnim></OverPack>)
}
export default Demo

4. 还有个解决方案,就是在服务端渲染的时候将 QueueAnim 换成其他标签,如下:

import React from 'react'
import QueueAnim from 'rc-queue-anim'
import OverPack from 'rc-scroll-anim/lib/ScrollOverPack'
import useIsClient from '@hooks/useIsClient'function Demo ({ id }) {// isClient 为true的时候说明是服务端渲染,false 为客户端渲染(浏览器)const isClient = useIsClient()// 在服务端渲染的时候将 QueueAnim 换成 divfunction Dom (props) {if (isClient) {return (<QueueAnim appear={isClient}>{ props.children }</QueueAnim>)} else {return (<div>{ props.children }</div>)}}return (<Domtype="bottom"appear={ isClient }><div key={1}></h4><div key={2}></div></Dom>)}
export default Demo
												

使用Umi SSR 报错 Warning: Did not expect server HTML to contain a <div> in <div>.相关推荐

  1. vagrant up报错 Warning: Authentication failure. Retrying...解决方案

    vagrant up报错 Warning: Authentication failure. Retrying...解决方案 参考文章: (1)vagrant up报错 Warning: Authent ...

  2. ionic4 背景设置动态图片报错WARNING: sanitizing unsafe style value background-image:url

    ionic4 背景设置动态图片报错WARNING: sanitizing unsafe style value background-image:url WARNING: sanitizing uns ...

  3. python报错warning: install_lib: 'build\lib' does not exist -- no Python modules to install

    先哭一会儿,差点搞自闭 python 离线安装python-docx模块 离线包 https://files.pythonhosted.org/packages/e4/83/c66a1934ed5ed ...

  4. docker部署禅道报错 WARNING: IPv4 forwarding is disabled. Networking will not work.

    docker部署禅道 报错 WARNING: IPv4 forwarding is disabled. Networking will not work. 通过 #创建网络后启动禅道服务器 docke ...

  5. 树莓派重启DHCP报错Warning: The unit file, source configuration file or drop-ins of docker.service changed

    问题 树莓派重启DHCP报错Warning: The unit file, source configuration file or drop-ins of docker.service change ...

  6. MySQL无法启用/etc/my.cnf配置文件,重启报错Warning: World-writable config file ‘/etc/my.cnf’ is ignored的解决方法

    MySQL无法启用/etc/my.cnf配置文件,重启报错Warning: World-writable config file '/etc/my.cnf' is ignored的解决方法 问题分析 ...

  7. Linux启动进入紧急模式报错Warning: Intel Processor - this hardware has not undergone upstream testing.

    我在vmware中删除了一个虚拟机的某一块硬盘,导致开机直接进入紧急模式,并报错Warning: Intel Processor - this hardware has not undergone u ...

  8. pod状态为pending,报错 warning failedscheduling 2m42s (x221 over 5h3m) default-scheduler

    因为"Tolerations:node.kubernetes.io/not-ready:NoExecute for 300s"处于"Pending"状态,报错 ...

  9. IAR工程编译报错Warning[Pe223]: function “Get_Tempreture“ declared implicitly......

    IAR工程编译报错Warning[Pe223]: function "Get_Tempreture" declared implicitly E:\stm32编程文件\编程文件\4 ...

最新文章

  1. android system window,Android控件的fitSystemWindows属性
  2. 苹果裁员逾200人,拿无人驾驶“开刀”
  3. 那些对数据实时性要求高的APP后端是怎么做的
  4. Dos命令控制Mysql语句(自己老记不住)
  5. log4j每天,每小时产生一日志文件
  6. 逻辑判断-if语句/文件目录属性判断/case判断
  7. 【问链-区块链基础知识系列】 第十五课 数字货币交易所的前世、今生和未来(二)
  8. 改进初学者的PID-介绍
  9. EditPlus构建轻量级编译环境
  10. 计算机桌面有黑边怎么调整,电脑屏幕旁边有黑色框如何恢复_电脑两边黑边怎么还原-win7之家...
  11. idea报“Usage of API documented as @since 1.7”这一问题的解决方法
  12. 工作流的节点关系详解
  13. MFC在一个工程中启动其他工程的exe文件
  14. Java学习笔记分享之MyBatis篇(中)
  15. 利用批处理添加受信任站点
  16. IRQL深入解析(1)--IRQL级别
  17. IOS仿[自选股]项目开发
  18. 五子棋游戏Java代码简单实现(含活动图和类图设计)
  19. 开发者出海跨境收款——如何完美解决限额问题?
  20. cent os通过ssh安装图形桌面

热门文章

  1. 【朝花夕拾】Android自定义View篇之(十一)View的滑动,弹性滑动与自定义PagerView...
  2. 【实战】python-docx---每页表格固定显示行数
  3. java swing背景_java swing 设置背景图片的方法一
  4. linux系统应用实验DNS的安装,DNS配置实验小结
  5. 解决“¥”符号在安卓上显示只有一个横杠的问题
  6. 3.处理死锁的方法——避免死锁(银行家算法)
  7. TikTok上做视频搬运会导致限流吗?
  8. html文件如何设置为桌面壁纸,怎样把文件里的图片设置为桌面背景时全部是全屏图?最好详细一点的。...
  9. Eaglestream平台下 取消BMC ACPI引发的host 无法power on 问题
  10. 拓扑排序 by zyz on 2021/4/11