首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在具有服务器端呈现(SSR)的React.js中使用窗口

无法在具有服务器端呈现(SSR)的React.js中使用窗口
EN

Stack Overflow用户
提问于 2019-02-08 11:16:54
回答 1查看 3K关注 0票数 0

我正在尝试在我的React应用程序中使用SSR,而我正在努力使用window,因为它只在客户端可用。正因为如此,我尝试了下面的方法。

代码语言:javascript
复制
if (typeof window === "undefined" ? {} : window.innerWidth >= 768) {
  windowScrollTop =
    typeof window === "undefined" ? {} : window.pageYOffset / 3;
  } else {
    windowScrollTop = 0;
}

通过这样做,它是有效的,但每次访问每个页面时屏幕都会闪烁。我认为这是因为服务器端是被访问的,而window从typeof window === "undefined" ? {} : ...中被分配为空。当客户端被访问时,window可用。我想这就是屏幕闪烁的原因。

有没有办法解决这个问题?我已经在一个测试服务器上用一些示例代码托管了这个网站。有人知道如何处理window问题吗?

EN

回答 1

Stack Overflow用户

发布于 2019-02-08 15:31:06

我有一个SSR应用程序,并检查服务器或客户端是否像这样呈现。然而,我不确定这是否是最好的做法,但它对我来说已经足够了。

代码语言:javascript
复制
import React, { Component } from "react";
import SomeImportedComponent from "../SomeImportedComponent";

// Check if server or client is rendering
const hasWindow = (typeof window !== 'undefined') ? true : false;

class MyComponent extends Component {
    render() {
        return (
            const options = {
                innerWidth: hasWindow ? window.innerWidth : null,
                pageYOffset: hasWindow ? window.pageYOffset : null,
            }
            return(
                <SomeImportedComponent {...options} />
            )
        );
    }
}

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

https://stackoverflow.com/questions/54585572

复制
相关文章

相似问题

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