styled-components


  • 2022/01/05
  • styled-components - 1

  • JavaScriptファイルでスタイルを定義し、Reactコンポーネントとして使用します.
  • はJavaScriptコードと密接に結合しており、複数のコードを記述することができます.
  • 個別のCSSファイルを作成する必要はなく、1つのファイルでスタイルを管理するだけです.
  • スタイルコードと構成部品コードを結合したい場合、ガラス.
  • styled-components - 2

  • でタグ付けされたテンプレート文字の構文を使用します.
  • CSSコードにpost-css、minification、およびSassが適用される.
  • 処理クラス名自体がhashであり、
  • CSSコードは重複しない.
  • styled-conents例1

    function Sample() {
      return (
        <Container>
          <Button>Submit</Button>
        </Container>
      );
    }
    const Container = styled.div`
      width: 400px;
      height: 400px;
    
      display: flex;
      justify-content: center;
      align-items: center;
      border: 1px solid rgba(0, 0, 0, 0.3);
    `;
    
    const Button = styled.button`
      background: orangered;
      color: white;
      padding: 12px 40px;
      border: none;
    `;

    styled-conents例2

    function Sample() {
      const [clicked, setClicked] = useState(false);
    
      return (
        <Container>
          <Button onClick={() => setClicked((bool) => !bool)} clicked={clicked}>
            Submit
          </Button>
        </Container>
      );
    }
    const Button = styled.button`
      background: ${({ clicked }) => (clicked ? "orangered" : "lavender")};
      color: ${({ clicked }) => (clicked ? "lavender" : "orangered")};
      padding: 12px 40px;
      border: none;
    `;

    styled-conents例3

    function Sample2() {
      return (
        <List>
          <ListItem>List one</ListItem>
          <ListItem>List two</ListItem>
          <ListItem>List three</ListItem>
        </List>
      );
    }
    const List = styled.ul`
      display: flex;
      flex-direction: column;
    `;
    
    const ListItem = styled.li`
      padding: 20px 100px;
      background: orangered;
      color: white;
    
      & + & {
        margin-top: 8px;
      }
    `;