iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Modern Web

寫出好維護又簡潔的 react 程式碼 feat: Function Programming系列 第 9

day9: CSS style 規劃 - CSS in JS(emotion 使用 - 3)

  • 分享至 

  • xImage
  •  
 使用 styled 方式

 這個方式其實是 emotion 參考 styled-component,

 寫法是 `styled.` 任一 html element, 這樣就會形成一個帶 props 的 style component
npm i @emotion/styled
import styled from '@emotion/styled'

const Button = styled.button`
  color: turquoise;
`

render(<Button>This my button component.</Button>)

如果要判斷 button 是否有 active 來改變顏色傳,則可以傳 props 進到 <Button> ,只要在 <Button> 增加 active 的 props,內部再針對是否有 active 去做判斷就可以達成

import styled from '@emotion/styled'

const Button = styled.button`
  color: ${props=>props.active?:'red':'blue'};
`

render(<Button active>This my button component.</Button>)

也可以使用一個現有的 component 並附加 emotion 的 styled

import styled from '@emotion/styled'
const Basic = ({ className }) => (
  <div className={className}>Some text</div>
)

const Fancy = styled(Basic)`
  color: hotpink;
`

render(<Fancy />)

或是將 emotion 的 styled parent 傳進任意的 child 也很方便

import styled from '@emotion/styled'

const Child = styled.div`
  color: red;
`

const Parent = styled.div`
  ${Child} {
    color: green;
  }
`

render(
  <div>
    <Parent>
      <Child>Green because I am inside a Parent</Child>
    </Parent>
    <Child>Red because I am not inside a Parent</Child>
  </div>
)

上一篇
day8: CSS style 規劃 - CSS in JS(emotion 使用 - 2)
下一篇
day10: CSS style 規劃 - utility CSS(Tailwind)-1
系列文
寫出好維護又簡潔的 react 程式碼 feat: Function Programming30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言