取决于媒体查询的常规参数

时间:2019-03-15 14:23:51

标签: javascript css reactjs sass

因此,Im目前处于一种情况下,当我在移动设备上使用Im时,我需要更改组件的特定参数值。例如:

@media all and (max-width: 720px)

与scss一起使用的

我有这个组件,在使用时会带一些参数;

<Books pageLimit={10} />

因此,在我的情况下,我想将属性的值从10更改为4

720px配备设备(@media all和(最大宽度:720px)或以下)。

我对媒体查询和样式等还很陌生。所以我不确定如何解决此问题。任何帮助将不胜感激。

1 个答案:

答案 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>