gpt4 book ai didi

reactjs - 根据视口(viewport)大小进行有条件渲染的 react

转载 作者:行者123 更新时间:2023-12-03 13:11:29 25 4
gpt4 key购买 nike

对于 React 怪物来说,这应该是一个简单的任务。 :) 我已经写好了条件,但我不知道如何在构造函数中处理视口(viewport)大小以使条件起作用。简单明了,我想在视口(viewport)大小为 1451px 或更宽时显示一个元素,在 1450px 或更小时显示另一个元素。

这是我的代码(简化)

class My Class extends React.Component {
constructor(props) {
super(props);
this.state = {
isDesktop: "1450px" //This is where I am having problems
};
}

render() {
const isDesktop = this.state.isDesktop;

return (
<div>
{isDesktop ? (
<div>I show on 1451px or higher</div>
) : (
<div>I show on 1450px or lower</div>
)}
</div>
);
}
}

也许我应该与 ComponentWillMount 或 ComponentDidMount 一起使用。老实说,不确定。我是 React 新手。

提前谢谢大家。

最佳答案

Perhaps I am suppposed to work it with ComponentWillMount or ComponentDidMount

是的,您需要监听resize事件并在变化时更新内部状态。您可以通过在组件安装时添加事件处理程序来完成此操作。尝试完整示例 here .

class App extends React.Component {
constructor(props) {
super(props);
this.state = {
isDesktop: false //This is where I am having problems
};

this.updatePredicate = this.updatePredicate.bind(this);
}
componentDidMount() {
this.updatePredicate();
window.addEventListener("resize", this.updatePredicate);
}

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

updatePredicate() {
this.setState({ isDesktop: window.innerWidth > 1450 });
}

render() {
const isDesktop = this.state.isDesktop;

return (
<div>
{isDesktop ? (
<div>I show on 1451px or higher</div>
) : (
<div>I show on 1450px or lower</div>
)}
</div>
);
}
}

关于reactjs - 根据视口(viewport)大小进行有条件渲染的 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46586165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com