因此,Im目前处于一种情况下,当我在移动设备上使用Im时,我需要更改组件的特定参数值。例如:
@media all and (max-width: 720px)
与scss一起使用的
我有这个组件,在使用时会带一些参数;
<Books pageLimit={10} />
因此,在我的情况下,我想将属性的值从10更改为4
720px配备设备(@media all和(最大宽度:720px)或以下)。
我对媒体查询和样式等还很陌生。所以我不确定如何解决此问题。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以添加窗口resize
的事件侦听器,并在窗口的宽度低于720px
时更改状态。
示例(点击Full page
即可查看其运行情况)
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>