我正在尝试执行调整大小操作,该操作将返回窗口的宽度并使用 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/