作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我目前处于这样一种情况,当我在移动设备上时,我需要更改组件的特定参数值。例如:
@media all and (max-width: 720px)
正在与 scss 一起使用
我有这个组件,在使用时需要一些参数;
<Books pageLimit={10} />
所以在我的例子中,我想将属性的值从 10 更改为 4
720 像素分辨率设备(@media all 和(最大宽度:720 像素)或以下。
我对媒体查询和样式等很陌生。所以我不确定如何解决这个问题。任何帮助将不胜感激。
最佳答案
可以添加一个窗口resize
事件监听器,当窗口宽度小于720px
时改变一个状态。
示例(点击整页
查看实际效果)
function Books({ pageLimit }) {
return <div>{pageLimit}</div>;
}
class App extends React.Component {
state = {
pageLimit: window.innerWidth < 720 ? 4 : 10
};
componentDidMount() {
window.addEventListener("resize", this.resize);
}
componentWillUnmount() {
window.removeEventListener("resize", this.resize);
}
resize = () => {
this.setState({ pageLimit: window.innerWidth < 720 ? 4 : 10 });
};
render() {
return <Books pageLimit={this.state.pageLimit} />;
}
}
ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
关于javascript - 取决于媒体查询的通用参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55184742/
我是一名优秀的程序员,十分优秀!