🫢 Damn~~❗️ ReferenceError: window is not defined?

Damn❗️Damn❗️Damn❗️Damn❗️Damn❗️

ReferenceError: window is not defined?

在用 next 开发时是否经常遇到 XXX is not defined !!

🙋‍♀️🌰:在使用ahooks时,依赖windowdocumentnode不支持的对象 那么恭喜你,你应该会看到如下报错

解决方案

jsx 复制代码
'use client'
import { useEffect } from 'react';  
const Page = () => {  
    useEffect(() => {  
        console.log(window.location.origin);  
    }, []);  

    return (  
        <div>  
            <h1>Index Page</h1>  
        </div>  
    );  
}; 
export default Page;

建议封装成hooks

jsx 复制代码
'use client';
import { useRef, useEffect } from 'react';

const useWindow = () => {
    const windowRef = useRef(null);
    useEffect(() => {
        windowRef.current = window;
        // documentRef.current = window.document;
    }, []);
    return windowRef;
};

export default useWindow;

使用

jsx 复制代码
'use client';
import React from 'react';
import { useScroll } from 'ahooks';
import { useDocument } from '@/hooks';

const ScrollTop = () => {
    const document = useDocument();
    const scroll = useScroll(document);
    return (
        ...
        )
    );
};

export default ScrollTop;

扩展

最近在掘金看见了一个下雪特效,我想这tM不拿到我的网站来试试水!

github-snow-fall 科学

演示网站-snow-fall 科学

我看了源码是使用webComponent实现的 so easy!!

PS:想要学习webComponent可以查看源码对照学习

我直接一手import,反手给我一个报错!!

Damn❗️❗️❗️

报错如下

csharp 复制代码
HTMLElement is not defined

部分源码如下:

折腾了一段时间也没搜索到教程

最后解决办法如下:有更好的办法可以在评论区留言

js 复制代码
import dynamic from 'next/dynamic';
dynamic(import('@zachleat/snow-fall'), {
    ssr: false
});
const Snow = () => {
    return (
        <snow-fall></snow-fall>
    );
};

结语

next项目虽然有时在dev环境可以跑通,但build时出现了上述问题是不能编译通过的!!

头图片是蛇皮饼小干

相关推荐
likuolei2 小时前
XSL-FO 软件
java·开发语言·前端·数据库
正一品程序员2 小时前
vue项目引入GoogleMap API进行网格区域圈选
前端·javascript·vue.js
j***89462 小时前
spring-boot-starter和spring-boot-starter-web的关联
前端
star_11122 小时前
Jenkins+nginx部署前端vue项目
前端·vue.js·jenkins
im_AMBER3 小时前
Canvas架构手记 05 鼠标事件监听 | 原生事件封装 | ctx 结构化对象
前端·笔记·学习·架构
JIngJaneIL3 小时前
农产品电商|基于SprinBoot+vue的农产品电商系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·农产品电商系统
Tongfront3 小时前
前端通用submit方法
开发语言·前端·javascript·react
可爱又迷人的反派角色“yang”3 小时前
LVS+Keepalived群集
linux·运维·服务器·前端·nginx·lvs
han_3 小时前
前端高频面试题之CSS篇(二)
前端·css·面试
JIngJaneIL3 小时前
书店销售|书屋|基于SprinBoot+vue书店销售管理设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·书店销售管理设计与实现