情感 - 将样式对象传递给外部库

Emotion - pass style object to external library

我正在使用 reactjs-popup,它的道具之一是 contentStyle,它允许您传递 css-in-js 对象来设置内部 div 的样式图书馆。

然而,当我传递带有@media 的css 对象时,库不处理它。

我想知道是否有办法向 "translate" 这个对象表达情感,或者以某种方式包装库元素,以便它可以根据需要处理 @media 查询。

这是一个演示代码:

/** @jsx jsx */
import { jsx } from '@emotion/core';
import ReactJsPopup from 'reactjs-popup';
import { FC, PropsWithChildren } from 'react';

const Modal: FC<{}> = props => {
    const style = {
        padding: 0,
        minHeight: '100%',
        '@media (min-width: 576px)': {
            minHeight: 'auto' // <----------- Doesn't work
        }
    }
    return (
        <ReactJsPopup contentStyle={style}>
            {(close): JSX.Element => (
                <div>
                    BODY
                </div>
            )}
        </ReactJsPopup>
    );
};

export default Modal;

内联样式对象目前不支持媒体查询。

这里可行的选择是使用 className 属性来设置内容的样式。如 docs 所示:

this class name will be merged with the component element: ex className='foo' means foo-arrow to style arrow, foo-overlay to style overlay and foo-content to style popup content

使用情感时,您可以使用此 属性.

确保选择器是唯一的
import { css } from "emotion";

<ReactJsPopup
  className={css`
    &-content {
       color: red;
    }
  `}
>
</ReactJsPopup>

注:&为情感添加的随机类名。后面是库添加的content