Next.js 服务器渲染组件 window 对象

Next.js server rendered component window object

我有一个组件通过 js google api 库处理 google 登录。

export default class Index extends React.Component {
  componentDidMount() {
    window.onGoogleLoginSuccess = this.onGoogleLoginSuccess.bind(this)
  }

  render() {
    return (
      <div
          className="g-signin2"
          data-onsuccess="onGoogleLoginSuccess"
          data-theme="dark"
      />
  }
} 

因为我使用 express 作为我的服务器,组件正在服务器中呈现。

我放了一些日志,发现在服务器中调用了render方法,而从未调用过componentDidMount。

当next.js 在服务器中呈现组件时,是否有任何回调,我可以在其中放置一些将在客户端执行的代码?我可以在哪里访问 window 对象。

onComponentDidMount 是访问 window 的正确位置,因为该组件 安装在客户端(但渲染发生在客户端和服务器上).

也许这不是完整的组件,但看起来 this.onGoogleLoginSuccess 在您的示例中不存在任何内容,因为 this 会在该上下文中引用反应实例。