Reactjs 如何访问盖茨比主题材料ui顶部布局中的{窗口,位置}

Reactjs 如何访问盖茨比主题材料ui顶部布局中的{窗口,位置},reactjs,gatsby,Reactjs,Gatsby,如何访问盖茨比主题材料ui top layout/components/top layout中的{window,location} 我必须使用盖茨比插件布局吗 我可以同时使用盖茨比插件布局和盖茨比主题材料界面吗?你不需要额外的插件来实现这一点。您有很多选择来实现这一点,但是如果没有提供任何代码,很难猜测哪一个适合您的需求或规范。您可以随时访问窗口对象,请记住您的代码可能会在build命令上抛出错误,因此: 将代码放在组件didmount生命周期或useffect钩子中,确保代码不会运行,除非它

如何访问盖茨比主题材料ui top layout/components/top layout中的{window,location}

我必须使用盖茨比插件布局吗


我可以同时使用盖茨比插件布局和盖茨比主题材料界面吗?

你不需要额外的插件来实现这一点。您有很多选择来实现这一点,但是如果没有提供任何代码,很难猜测哪一个适合您的需求或规范。您可以随时访问
窗口
对象,请记住您的代码可能会在
build
命令上抛出错误,因此:

  • 将代码放在
    组件didmount
    生命周期或
    useffect
    钩子中,确保代码不会运行,除非它在浏览器中,在浏览器中将定义
    窗口
  • 在执行语句之前使用条件:

    if(窗口类型!=“未定义”){
    //你的代码在这里
    }

  • 另一种选择是,您的代码使用第三方模块/库,该模块/库需要在之前定义
    窗口
    ,因此,当盖茨比构建(编译并捆绑)您的所有资产时,您的代码可能会由于库的需要和
    窗口
    对象当时的未定义而抛出错误,在这种情况下,您需要将网页加载程序更改为
    null
    。在您的
    gatsby node.js
    中:

    exports.onCreateWebpackConfig=({stage,loaders,actions})=>{
    如果(阶段==“构建html”){
    actions.setWebpackConfig({
    模块:{
    规则:[
    {
    测试:/bad模块/,
    用法:loaders.null(),
    },
    ],
    },
    })
    }
    }