美文网首页程序员
Styled Conponents使用总结

Styled Conponents使用总结

作者: kiko_0421 | 来源:发表于2017-10-14 15:12 被阅读0次

    用法

    两种基础写法

    import styled from 'styled-components';
    // 第一种
    const Button = styled.button`
      background: blue;
    `;
    // 第二种
    const TomatoButton = styled(Button)`
      background: red;
    `;
    

    进阶

    attrs

    const Input = styled.input.attrs({
      type: 'text',
      size: props => props.small ? 3 : 8
    })`
      color: blue;
      padding: ${props => props.padding}
    `;
    

    css定义样式

    import styled, { css } from 'styled-components';
    
    const padding = '3em';
    const background = css`background: ${props.background};`;
    const Section = styled.section`
      color: white;
      padding: ${padding};
      background: ${background};
    `;
    

    extend

    const Button = styled.div`background: blue;`;
    const specialButton = styled.div`background: red;`;
    

    withComponent

    const Button = styled.div`background: blue;`;
    const aButton = Button.withComponent('a');
    

    keyframes定义动画的初始值和结尾值

    const rotate360 = keyframes`
        from {transform: rotate(0deg);}
        to {transform: rotate(360deg);}
    `;
    const Rotate = styled.div`
        display: inline-block;
        animation: ${rotate360} 2s linear infinite;
        padding: 2rem 1rem;
        font-size: 1.2rem;
    `;
    

    ** injectGlobal 定义全局样式**

    import { injectGlobal } from 'styled-components';
    injectGlobal`
      @font-face {
        font-family: 'Operator Mono';
        src: url('../fonts/Operator-Mono.ttf');
      }
    
      body {
        margin: 0;
      }
    `;
    

    使用经验

    • 组件容易刷新,state改变会导致所有组件刷新。主要是render内const定义造成的,解决办法就是const在render函数外定义甚至类外定义。。如果需要传参数,可以考虑在类外定义带参函数解决。
    • 尽可能用html自带状态,比如Radio和checkbox的checked状态和disabled状态。。

    相关文章

      网友评论

        本文标题:Styled Conponents使用总结

        本文链接:https://www.haomeiwen.com/subject/qsenyxtx.html