【问题标题】:responsive layout on React applicationReact 应用程序上的响应式布局
【发布时间】:2019-07-25 16:11:03
【问题描述】:

任务是根据设备宽度显示不同的组件;

我想出了两种变体:

  1. 编写一个 React 组件,它将在每个宽度(sm、md、xl)上采用多个组件。它会自动检查设备宽度并根据宽度只渲染一个组件。 (example)

<DeviceChecker>
    <Desktop>
        <List/>
    </Desktop>
    <Mobile>
        <Carousel/>
    </Mobile>
</DeviceChecker>

我不喜欢在这种方法中检查窗口调整大小事件的宽度。

  1. 在 React 中编写这两个组件,但使用 CSS 媒体查询显示或隐藏每个组件,如下所示:

<div>
    <Carousel className="sm" />
    <List className="md" />
</div>

在这种情况下我不喜欢的是 React 实际上会渲染这两个组件,但其中一个会被简单隐藏

我知道如何实现这两种变体,但问题是 哪一种是为 React 应用程序编写响应式布局的正确方法?

【问题讨论】:

标签: javascript html css reactjs bootstrap-4


【解决方案1】:

 @media only screen and (min-width: 768px) {
  section.dashboard .slick-list .slick-track {
    display: flex;
  }
  section.dashboard .slick-list .slide {
    opacity: 1;
  }
  header .wrapper .article h1 span.arrow {
    display:none;
  }

  header .wrapper .article .description {
    max-height: 300px
  }
} 

@media only screen and (min-width: 1024px) {

  .container header .wrapper {
    text-align:left;
    margin-left:5%;
    width:480px;
  }

  .container header .header-nav-area #nav_container  {
    display:flex;
  }

  .container header form {
    display:block;
  }

  .container header .menu-icon {
    display:none;
  }

  header .wrapper .article footer {
    display: block;
  }

  section.dashboard .slick-list .slick-track {
    display: flex;
    min-width: 309px;
    padding: 20px;
  }
  
  section.dashboard .slick-list .slick-track[index="2"] {
    display: flex;
  }

  section.dashboard .slick-list .slide {
    opacity: 1;
  }
} 

更多详情请访问; https://itnext.io/3-ways-to-implement-responsive-design-in-your-react-app-bcb6ee7eb424

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 2013-05-27
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多