React:为什么不直接使用 styles 对象而不是 styled-components?

React: Why not just use styles object instead of styled-components?

我以前用react native写过app,还有 我即将开始我的第一个反应项目。我注意到一个名为 Styled Components 的工具:https://www.styled-components.com/docs/basics#motivation

但是,除了我可以在与我的组件相同的文件中的样式定义内进行媒体查询之外,我看不到它有任何明显的好处。

但是假设我有这个按钮:

import React from 'react';

const StyledButton = ({ children }) => {
  return (
    <button type="button" style={styles.button}>
      { children }
    </button>
  );
}

const styles = {
  button: {
    backgroundColor: '#6BEEF6',
    borderRadius: '12px',
    border: 'none',
    boxShadow: '0 5px 40px 5px rgba(0,0,0,0.24)',
    color: 'white',
    cursor: 'pointer',
    fontSize: '15px',
    fontWeight: '300',
    height: '57px',
    width: '331px',
  }
}

export default StyledButton;

在样式组件中写这个会有什么不同?是否只有我的某些样式依赖于某些 props 样式组件才会发光?

例如,这在 React 中不起作用:

const StyledButton = ({ children, primary }) => {
  return (
    <button type="button" style={[styles.button, { color: primary ? 'green' : 'red' }]}>
      { children }
    </button>
  );
}

使用纯内联样式 运行 的一个早期障碍是缺少伪选择器 :hover:active 等。 也像您提到的,您也不能使用媒体查询。

Styled Components 很棒。另请查看 Aphrodite 或 Glamourous。

这是其中一些库的一个很好的比较 https://medium.com/seek-blog/a-unified-styling-language

如果不需要伪选择器,您可以像您这样问:

const StyledButton = ({ children, primary }) => {
  return (
    <button type="button" style={{ ...styles.button, color: primary ? 'green' : 'red' }}>
      { children }
    </button>
  );
}

Styled Components 可能是更好的选择。另外,看看 Radium 作为另一种选择。也处理伪选择器和媒体查询。超级好用。