反应服务器端渲染-addEventListener

特别的人

我有一个服务器端渲染react应用程序(因为我也需要Facebook Seo)。

我的应用程序的一部分需要获取window.innerWidth。

我已经搜索了很长时间,其中大多数人说您无法在服务器端找到窗口,因此您也需要在客户端进行渲染

我不知道事情如何工作,我有componentdidmount,但我的windowWidth永远是0。

服务器渲染之后,我们的bundle.js将启动,客户端的窗口将正常工作吗?为什么仍然是0?

state = {
      windowWidth: 0
}
    handleResize(){
        this.setState({windowWidth: window.innerWidth});
    }

    componentDidMount () {
        window.addEventListener('resize', this.handleResize);
     }

    componentWillUnmount () {
     window.removeEventListener('resize', this.handleResize);

    }

render() {
return (<div>{this.state.windowWidth}</div>)
}
Obiwankenoobi

问题是您附加了将新宽度设置为“调整大小”侦听器的功能,这意味着仅当调整屏幕大小时,新宽度才会添加到状态。您需要在内部设置宽度componentDidMount,然后在安装时将其宽度设置为正确。

沙盒

码:

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      windowWidth: 0
    };
  }

  handleResize = () => {
    this.setState({ windowWidth: window.innerWidth });
  };

  componentDidMount() {
    this.setState({ windowWidth: window.innerWidth });
    window.addEventListener("resize", this.handleResize);
  }

  componentWillUnmount() {
    window.removeEventListener("resize", this.handleResize);
  }

  render() {
    return (
      <div>{this.state.windowWidth && <p>{this.state.windowWidth}</p>}</div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

反应服务器端渲染校验和警告

来自分类Dev

服务器端的条件渲染

来自分类Dev

使用客户端和服务器端渲染来反应同构组件

来自分类Dev

反应路由器和服务器端渲染

来自分类Dev

反应服务器端渲染而无需轮询更改

来自分类Dev

安装程序如何对服务器端渲染做出反应?

来自分类Dev

反应服务器端渲染ReferenceError:文档未定义

来自分类Dev

反应服务器端渲染还是静态index.html?

来自分类Dev

如何在反应服务器端渲染中添加额外的快速路由以用作后端

来自分类Dev

在角度服务器端渲染中渲染图像

来自分类Dev

服务器端或客户端渲染

来自分类Dev

如何通过道具服务器端反应

来自分类Dev

在服务器端访问反应路由参数

来自分类Dev

Angular 2 Universal-服务器端渲染

来自分类Dev

使用Meteor模拟服务器端渲染

来自分类Dev

如何使用Angular 2服务器端渲染

来自分类Dev

React / Redux服务器端渲染初始状态

来自分类Dev

使用.net渲染React JS服务器端

来自分类Dev

React-Router无法在服务器端渲染

来自分类Dev

React Router / Hapi服务器端渲染错误

来自分类Dev

使用异步数据获取的服务器端渲染

来自分类Dev

React-服务器端组件渲染

来自分类Dev

在服务器端渲染时使用cookie的ReactJS

来自分类Dev

Django是否在服务器端渲染网页?

来自分类Dev

React JS服务器端渲染教程

来自分类Dev

React服务器端仅渲染特定路由

来自分类Dev

React-服务器端组件渲染

来自分类Dev

React服务器端渲染错误页面

来自分类Dev

服务器端渲染以进行特定选择