【发布时间】:2018-03-23 19:41:37
【问题描述】:
我有一个组件通过 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 作为我的服务器,因此组件正在服务器中呈现。
我放了一些日志,发现服务器中正在调用渲染方法,并且从未调用过componentDidMount。
当 next.js 在服务器中渲染组件时,是否有任何回调可以放置一些将在客户端执行的代码?我可以在哪里访问窗口对象。
【问题讨论】:
-
从未调用过 (componentDidMount)?根据 next.js 文档“此生命周期方法将仅在客户端上执行。”。您是否检查过组件是否实际安装在客户端?
-
@PieroDivasto 它永远不会被调用。由于在服务器端调用了 render 方法,我认为该组件正在安装在服务器端。我的问题是,当组件安装在服务器端时,是否有任何回调方法可以放置在客户端执行的代码。
标签: reactjs server-side-rendering next.js