【问题标题】:Changing inline style into styled-component将内联样式更改为样式组件
【发布时间】:2020-07-09 07:16:40
【问题描述】:

我正在尝试从内联样式切换到 css-in-jsx。我发现了 styled-components,并希望如果我使用完全相同的样式功能,我会在两种情况下得到相同的结果。然而,情况似乎并非如此。

例如,

<Container component="main" maxWidth="xs">
      <CssBaseline />
      <div style={{
               display: 'flex',
               flexDirection: 'column',
               alignItems: 'center'
             }}>
      {/* <Wrapper> */}
        <Avatar>
          <LockOutlinedIcon />
        </Avatar>
        <Typography component="h1" variant="h5">
          Sign in
        </Typography>
..................
      {/* </Wrapper> */}
      </div>
    </Container>
  );
}

当我使用它时,一切正常。 但是,现在我在另一个文件中做了这个:

export const Wrapper = styled.div`
  display: flex;
  flex-direction: 'column';
  align-items: center;
`;

当我注释掉我的旧 div 并使用 Wrapper 而不是那个时,我得到了这个:

为什么会这样?如果样式命令相同,为什么我得不到相同的结果?这是否意味着,如果我要迁移到 styled-components,我将不得不修复所有组件?

另外,我该如何解决这种特殊情况? :D

【问题讨论】:

  • 你能检查包装这个组件的 wapper 命令吗?父样式可以改变子样式行为。喜欢display: flexdisplay: block
  • 如果我改变它,头像会再次向上移动但位于网格的左侧@xdeepakv
  • 请添加沙箱来重现。调试的代码非常有限。
  • 我在沙箱中不断收到错误,但这有帮助吗? @xdeepakv 我或多或少地使用了材质 ui 的主题。 github.com/mui-org/material-ui/tree/master/docs/src/pages/…

标签: javascript css reactjs typescript styled-components


【解决方案1】:

我同意 cmets,沙盒会很好。我不知道它是否能解决您的问题,但通常最好将您的样式化道具指定为不带引用分隔符的字符串,即

export const Wrapper = styled.div`
  display: flex;
  flex-direction: column;
  align-items: center;
`;

【讨论】:

  • 我在沙箱中不断收到错误,但这有帮助吗?我或多或少地使用了材质 ui 的主题。 github.com/mui-org/material-ui/tree/master/docs/src/pages/…
  • 反引号内的所有内容都是字符串。
  • @DrewReese 是的,我的想法是 styled-components 在编写样式时可能需要严格的字符串值——但似乎并非如此,阅读他们的文档。
  • @Jnl 实际上是相反的,你不应该将它们指定为字符串,我相信这会解决你的问题。因此,您可以将'column' 替换为column。你能确认这是一个修复吗?
  • 是的,它成功了!简单粗心,错误!也许你也可以编辑你的答案:D
猜你喜欢
  • 2016-03-05
  • 2016-11-19
  • 1970-01-01
  • 2021-08-02
  • 2011-05-30
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
相关资源
最近更新 更多