反应模态组件接收相同的类

时间:2021-01-20 12:22:11

标签: reactjs styled-components

我有一个我制作的反应模态组件。我可以传递一个使其全屏显示或定义宽度的道具。一切正常,但是当第一个模式打开时,我遇到了重用它的问题。第二个组件采用与第一个相同的类,因此它使最大宽度为 100%。

例如,我想要一个全屏模态,并在我单击链接时以 50% 的大小在顶部显示第二个模态。

我正在使用样式化组件,我认为这可能是出现问题的地方。我只是不知道如何处理它。

模态组件:

<ModalContainer visible={visible} fullScreen={fullScreen}>
    <ModalDialog role="dialog" width={width}>
       <ModalBody>{children}</ModalBody>
    </ModalDialog>
</ModalContainer>

样式


export const ModalDialog = styled.div`
  width: 100%;
  max-width: ${({ width }) => width};
`;


export const ModalContainer = styled.div`
  visibility: hidden;
  opacity: 0;
  display: none;

  ${({ visible }) =>
    visible &&
    css`
      visibility: visible;
      opacity: 1;
      display: flex;
    `}

   ${({ fullScreen }) =>
    fullScreen &&
    css`
      width: 100vw;
      height: 100vh;
      overflow: none;

      ${ModalDialog} {
        box-shadow: none;
        max-width: 100%;
      }
   
    `}
`}

对话框的第一个模态的类也被用于第二个,即使它没有全屏道具。

0 个答案:

没有答案