javascript - 在 React 中调整窗口大小的操作

标签 javascript reactjs

我正在尝试执行调整大小操作,该操作将返回窗口的宽度并使用 React 动态渲染它。

这是我得到的:

class Welcome extends React.Component {
    constructor() {
        super();
        this.state = {
          WindowSize : window.innerWidth
        }
        this.handleResize = this.handleResize.bind(this);
    }
    handleResize(WindowSize, event) {
        this.setState({WindowSize: window.innerWidth})
    }
    render() {
    return <h1  onresize={this.handleResize(this.state.WindowSize)} hidden={(this.state.WindowSize  < 1024) ? "hidden" : ''}>Hello</h1>;
  }
}
ReactDOM.render(
   <Welcome/>,
   document.getElementById('root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
  <div id="root">
</div>
这在我重新加载页面时有效,但在我自行更改窗口大小时无效。

最佳答案

当您更改窗口大小时 - h1 元素的大小将不必更改,因此不能保证您的代码会运行。

你可以做的是使用 window 元素上的 resize 的 DOM 事件来调用你的函数:

class Welcome extends React.Component {
    constructor() {
        super();
        this.state = {
          WindowSize : window.innerWidth
        }
        this.handleResize = this.handleResize.bind(this);
    }
    componentDidMount() {
      window.addEventListener("resize", this.handleResize);
    }
    componentWillUnmount() {
      window.addEventListener("resize", null);
    }
    handleResize(WindowSize, event) {
        this.setState({WindowSize: window.innerWidth})
    }
    render() {
    return <h1 hidden={(this.state.WindowSize  < 1024) ? "hidden" : ''}>Hello</h1>;
  }
}
ReactDOM.render(
   <Welcome/>,
   document.getElementById('root')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
  <div id="root">
</div>

关于javascript - 在 React 中调整窗口大小的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45644457/

相关文章:

javascript - 设置表格分隔符位置

javascript - 加载 Ripple 时,phonegap ondevice 未首次触发

javascript - react native : How to set <TextInput/>'s height and width to <View/> container?

javascript - 如何使用 apollo 客户端处理 next.js 中的 httpOnly cookie 身份验证

javascript - 我需要使用一个处理程序处理不同的输入 onChange 方法

javascript - jQuery 使用 $.post 上传文件

javascript - 按钮 onclick 删除另一个浏览器窗口

javascript - Ionic 2 与 ngrx、AlertController、LoadController 问题

javascript - 如何隐藏打开键盘上的 float 按钮(Android/iOS)?

javascript - 存储变化时如何记住组件?