Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待app.js加载,然后在Next.js上运行组件_Javascript_Reactjs_Async Await_Next.js - Fatal编程技术网

Javascript 等待app.js加载,然后在Next.js上运行组件

Javascript 等待app.js加载,然后在Next.js上运行组件,javascript,reactjs,async-await,next.js,Javascript,Reactjs,Async Await,Next.js,我正在使用Next.js开发一个网站。 我需要使用JavaScript SDK连接用户登录 我决定在\u app.js中初始化SDK,因为我认为它应该是服务器加载的第一个文件。 所以我在\u app.js componentDidMount () { window.mySDK = new userInfoSDK() console.log('_app') } async componentDidMount () { console.log('page') cons

我正在使用Next.js开发一个网站。 我需要使用JavaScript SDK连接用户登录

我决定在
\u app.js
中初始化SDK,因为我认为它应该是服务器加载的第一个文件。 所以我在
\u app.js

componentDidMount () {
    window.mySDK = new userInfoSDK()
    console.log('_app')
 }
async componentDidMount () {
   console.log('page')
   const loginStatus = await window.mySDK.getInfo()
 }
page.js

componentDidMount () {
    window.mySDK = new userInfoSDK()
    console.log('_app')
 }
async componentDidMount () {
   console.log('page')
   const loginStatus = await window.mySDK.getInfo()
 }
我得到的结果是
window.mySDK没有定义

控制台显示

页面
_app.js

这意味着
page.js
组件是在
\u app.js
之前安装的吗

ComponentDiDMount只在客户端(而不是客户端)上调用一次 服务器),在初始渲染发生后立即执行。此时 在生命周期中,您可以访问孩子的任何引用(例如 访问底层DOM表示)。组件didmount() 子组件的方法在父组件的方法之前调用 组成部分

我认为对于您的用例,您可以在另一个REACT钩子或构造函数中初始化SDK,以确保它将在之前执行。

根据
componentDidMount
render
之后运行。也就是说,这意味着它首先运行渲染,然后运行组件didmount

简单解决方案: 在
\u app.js
中,在构造函数中编写代码:

constructor(props) {
    super(props)
    console.log('_app')
  }
您不需要在
page.js
中更改任何内容

在这种情况下,首先运行\u应用程序,然后运行其他页面

输出将是

_app.js
page

SDK将使用
窗口
对象,因此我认为它应该只在客户端运行。是的,但尝试使用
进程。浏览器
检查您是否在浏览器或服务器中,而不是使用组件。提供的解决方案是否对您有效,或者您是否有其他与此相关的问题?