css - React - 响应式应用程序 - 最好通过 CSS 隐藏组件中的元素或不渲染它

标签 css reactjs responsive-design media-queries

我目前正在开发一个基于 React.js 的应用程序。假设我们在 React 中有一个 Header 组件,里面有一个小 Logo 组件,应该只在移动分辨率级别显示。我正在从父组件传递 isMobile Prop 。该 Prop 基于:

const mql = global.matchMedia(`(min-width: 768px)`);
mql.addListener(() => this._mediaQueryChanged());
this.setState({
  mql: mql,
  isMobile: !mql.matches
});

_mediaQueryChanged() {
  this.setState({
    isMobile: !this.state.mql.matches
  });
}


<Header isMobile={this.state.isMobile} />

Header 中:

render() {
  const {isMobile} = this.props;
  const containerClass = classNames('header-component', {
    'is-mobile': isMobile
  });
  return (
    <header className={containerClass}>
      {
        isMobile && 
        (
          <section className="mobile-header">
            <Button className="toggle-menu" onClick={() => this._toggleMenu()}>
              <Icon name="menu" />
            </Button>
            <Logo className="header-logo" />
          </section>
        )
      }
      <span>login</span>
    </header>
  );
}

如果 mql 匹配,则它不是移动的。我的问题是:我是否应该在每次更改媒体查询时传递此参数并重新渲染组件?在重新渲染隐藏/显示 Logo 组件期间?或者只是使用 CSS 来显示/隐藏它,组件将一直安装在那里。没有重新渲染。

想法?

最佳答案

我同意这可能只是 CSS 的工作。

.header-class .logo {
  display:none;
}

@media only screen and (min-width: 768px) {
    .header-class .logo {
      display:block;
    }
}

关于css - React - 响应式应用程序 - 最好通过 CSS 隐藏组件中的元素或不渲染它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41449680/

相关文章:

css - bootstrap 主题——如何删除重复的样式?

css - 将页脚固定到浏览器底部

javascript - 创建 react 应用程序 : Transpile JSX of external package in node_modules

reactjs - 如何为 React 中的链接创建可访问的 onClick 处理程序?

reactjs - 使用 Next.js 无法在侧边栏中导航

twitter-bootstrap - 升级到 Magento 1.9 后如何使旧的自定义 Magento 主题响应?

javascript - 从 html 字符串中删除所有不需要的标签,但在 JS 中保留空格

html - bootstrap 3 右拉按钮从底部切掉

css - 如何布局要堆叠在移动设备上的按钮?

html - 我的 Web Gallery 中有一个小错误,当艺术家的名字很大时,它会弄乱移动布局