reactjs - 在 React 16.1.1 中区分组件安装或水合

标签 reactjs react-ssr

我有一个 ScrollToTopOnMount 实现 here

componentDidMount(prevProps) {
  window.scrollTo(0, 0)
}

效果很好,除了当我将它与 SSR 和保湿结合使用时,我的页面会在保湿发生时快速跳到顶部。

其他答案如this one让我希望可能有某种方法可以区分组件是合法安装还是只是水合。然而,这似乎不是 react-dom 16.1.1 的情况,服务器 客户端似乎都调用了 componentWillMount

有没有办法让生命周期方法确定它是在没有 DOM 的地方挂载还是在水化现有节点?

最佳答案

ReactDOM.hydrate 在完成时有一个回调。一种解决方案是设置和取消设置全局变量 window.hydrating = true 并在组件安装时基于此进行区分。

关于reactjs - 在 React 16.1.1 中区分组件安装或水合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47299985/

相关文章:

css - 如何覆盖 material-ui react 组件的 @media css

css - Bootstrap 页脚模态间距在 React.js 中不起作用

rendering - 使用 Koa 同构渲染 html 字符串

javascript - 将 CSS 添加到 React SSR 组件

reactjs - React服务端渲染中如何基于动态路由路径获取数据

reactjs - 如何使 Google Auto Ads 与 react SSR 应用程序一起使用

javascript - 如何在 React.js 中使用获取的数据过滤数组?

javascript - react native : ListView renders before dataSource being set

css - Webpack 4 节点模块 css - 语法错误 : Unexpected token .(点)

javascript - react -服务器端渲染