Ant-design: [email protected]

์— ๋งŒ๋“  2017๋…„ 03์›” 30์ผ  ยท  65์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ant-design/ant-design

[email protected] ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” /ํ•ด์•ผ ํ•  ์ผ์„ ๋…ผ์˜ ํ•  ์ˆ˜์žˆ๋Š” ์žฅ์†Œ :

React @ 16 ์ƒ๋Œ€

  • [x] React Umbrella ์ง€์› # 5377
  • [x] ๋ชจ๋“  ref: string ์—์„œ ref: function ๋ฆฌํŒฉํ„ฐ๋ง

...

๊ฐœ๋ฏธ ์ž์‹ ์˜

๋„๊ตฌ

...

Ant Design Specification ์ƒ๋Œ€

  • [x] ๋””์ž์ด๋„ˆ์˜ ๊ณ„ํš์— ๋”ฐ๋ผ ๋” ํฐ ๊ธฐ๋ณธ ๊ธ€๊ผด ํฌ๊ธฐ.

...

์‚ฌ์ดํŠธ ant.design

  • [] TypeScript # 5390์—์„œ ๋ฐ๋ชจ ๋‹ค์‹œ ์ž‘์„ฑ
  • [x] ๋ฐ๋ชจ ์ฝ”๋“œ ํŽธ์ง‘ ๊ฐ€๋Šฅ ๋˜๋Š” ํ”Œ๋ ˆ์ด ๊ทธ๋ผ์šด๋“œ # 5140

...

๐Ÿ—ฃ Discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

Hiya, ์ €๋Š” ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ์˜ ํ•ต์‹ฌ ๊ธฐ์—ฌ์ž ์ค‘ ํ•œ ๋ช…์ด๋ฉฐ์ด ์Šค๋ ˆ๋“œ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์—ด๋ฆฐ ๋ฌธ์ œ (์œ„ ์ฐธ์กฐ)๋กœ ์ธํ•ด์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ SC๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ ค์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ์—ฐํžˆ์ด ๋Œ€ํ™”๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. : wink : โ€“ ์ด์ œ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ์ณ๋‘๊ณ 

autoprefixer ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” postcss์— ๋น„ํ•ด ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์‹ ์ค‘ํ•˜๊ฒŒ stylis ๋ฅผ ์„ ํƒ ํ–ˆ์œผ๋ฉฐ์ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š”

๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์€ ์‚ฌ์šฉ ์ค‘์ด ์•„๋‹ˆ๋ฉฐ ์ง€๊ธˆ btw๋กœ ์‚ญ์ œ๋˜์—ˆ์œผ๋ฉฐ inline-style-prefixer๊ฐ€์žˆ๋Š” ์ด์ „ ์ž๋™ ์ ‘๋‘์‚ฌ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์กฐ์ฐจ๋„ @rofrischmann์˜ css-in-js ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด ๋งค์šฐ ์‹ ๋ขฐํ•  ์ˆ˜์žˆ๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

๋˜๋Š” ์ผ๋‹จ css-in-js๋ฅผ ์„ ํƒํ•˜๋ฉด px-to-rem๊ณผ ๊ฐ™์€ post-css ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์˜ ํŽธ๋ฆฌํ•จ์„ ์žƒ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์˜ ๋ณด๊ฐ„์—์„œ๋Š” ์•„๋ฌด JS ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ๋Œ€์ฒด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ CSS-in-JS์˜ lodash์™€ ๊ฐ™์€ "polished"๋ผ๋Š” ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ SASS / LESS์—์„œ ๊ธฐ๋Œ€ํ•  ์ˆ˜์žˆ๋Š” ๋ชจ๋“  ๋ฏน์Šค ์ธ (์˜ˆ : ๋„์šฐ๋ฏธ ํ•จ์ˆ˜)๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. https : // polished. js.org

(์‹ค์ œ๋กœ ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด PostCSS๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ”Œ๋Ÿฌ๊ทธ์ธ btw๋ฅผ ์ง€์›ํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค)

์šฐ๋ฆฌ๋Š” ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์ „์ฒด ํ˜„์žฌ CSS ํด๋ž˜์Šค ์ด๋ฆ„์„ ์œ ์ง€ํ•ด์•ผํ•˜์ง€๋งŒ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์Šคํƒ€์ผ์— ๋Œ€ํ•œ ์ž์ฒด ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๊นŒ?

์‚ฌ์šฉ์ž ์ •์˜ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ฒจ๋ถ€ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ .attrs ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ตฌ์„ฑ ์š”์†Œ์— ์ถ”๊ฐ€ ์†Œํ’ˆ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด :

const ButtonLink = styled.a.attrs({
  className: 'your-custom-extra-classname'
})`
   ... // css and stuff
`

๋” ๋งŽ์€ ์žฅ์ ๊ณผ ๊ธฐ๋Šฅ :

  • CSS ๋งŒ ์ž‘์„ฑํ•˜๊ณ  (์ด๋ฏธ ์•Œ๊ณ ์žˆ์„ ์ˆ˜๋„ ์žˆ์Œ) ์œ ์ผํ•œ ์ถ”๊ฐ€๋Š” ์•ฐํผ์ƒŒ๋“œ์™€ ์ค‘์ฒฉ์ž…๋‹ˆ๋‹ค.
  • ์Šคํƒ€์ผ + ๊ตฌ์„ฑ ์š”์†Œ ๋งคํ•‘์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๊ฒƒ์ด ๊ตฌ์„ฑ ์š”์†Œ
  • css ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏน์Šค ์ธ / ๊ณต์œ  ์Šคํƒ€์ผ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ๋” ํ•„์š”ํ•˜์‹œ๋ฉด ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์ƒˆ๋กœ์šด ์›น ์‚ฌ์ดํŠธ๋ฅผ ํ™•์ธํ•˜์„ธ์š” : 100 : https://styled-components.com

๋ชจ๋“  65 ๋Œ“๊ธ€

์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/ant-design/ant-design/issues/5140 ์€ ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ํ”Œ๋ ˆ์ด ๊ทธ๋ผ์šด๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””์ž์ด๋„ˆ์˜ ๊ณ„ํš์— ๋”ฐ๋ผ ๊ธฐ๋ณธ ๊ธ€๊ผด ํฌ๊ธฐ๊ฐ€ ๋” ์ปค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cloneElement ์„ context ๋ฆฌํŒฉํ„ฐ๋ง?

  1. ๋ฉ”๋‰ด
  2. ํƒญ

์žฌ ๊ฐœ์„ค # 1473?

๋” ๊ฐ•๋ ฅํ•œ ๋‚ด์žฅ i18n ์ง€์› https://github.com/ant-design/ant-design/issues/5554#issuecomment -290372828

๊ตฌ์„ฑ ์š”์†Œ TS ์ •์˜์˜ ์ฃผ์„์„ ๊ฐœ์„ ํ•˜๊ณ  ์™„๋ฒฝํ•˜๊ฒŒ?

2-> 3 ๋˜๋Š” 1-> 3์˜ ๋„๊ตฌ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

@yesmeck https://github.com/ant-design/ant-design/issues/5570#issuecomment -290622803 ์˜๋ฏธ Tabs.TabPane[key] ๋ฐ Menu.Item[key] ํฌ๊ธฐํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค ...

๋” ๊ฐ•๋ ฅํ•œ ๋‚ด์žฅ i18n ์ง€์› # 5554 (์ฝ”๋ฉ˜ํŠธ)๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

@plandem ํ‰๊ฐ€ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ณ„์† ๋…ผ์˜ํ•ฉ์‹œ๋‹ค.

๊ตฌ์„ฑ ์š”์†Œ TS ์ •์˜์˜ ์ฃผ์„์„ ๊ฐœ์„ ํ•˜๊ณ  ์™„๋ฒฝํ•˜๊ฒŒ?

@infeng ์ด๊ฒƒ์ด TypeScript์—์„œ ๋ฐ๋ชจ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์—ฌ ์ •์˜์—์„œ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ ํ•  ์ˆ˜์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค https://github.com/ant-design/ant-design/issues/5390

2-> 3 ๋˜๋Š” 1-> 3์˜ ๋„๊ตฌ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์˜ˆ, ์™„๋ฒฝํ•œ ์†”๋ฃจ์…˜์€ ์•„๋‹ˆ์ง€๋งŒ https://github.com/ant-design/ant-design/issues/3759#issuecomment -272353773๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@sorrycc webpack@2 ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?

์„œ์‹์žˆ๋Š” ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? # 1083

ํŽธ์ง‘์ž๋Š” ํ˜„์žฌ๋กœ์„œ๋Š” ์ตœ๊ทผ ๊ณ„ํš์— ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ThemeProvider๋Š” https://github.com/ant-design/ant-design/issues/5656 ์—์„œ ๋…ผ์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ [email protected] ์— ๋„์ž… ํ•  ์‹œ๊ฐ„์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐจํŠธ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
ํŒŒ์ด, ํžˆ์Šค ๊ทธ๋žจ ๋“ฑ๊ณผ ๊ฐ™์€.

์ฐจํŠธ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

๊ฐ™์€ ํŒ€์˜ ์ฐจํŠธ๋ฅผ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://antv.alipay.com/index.html

๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐ˜๋ณตํ•ด์„œ ๊ตฌํ˜„ํ•˜๋Š” antd์—์„œ ๋ˆ„๋ฝ ๋œ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์˜คํ”„ ์Šคํฌ๋ฆฐ ์‚ฌ์ด๋“œ ๋ฐ”์ž…๋‹ˆ๋‹ค.

react-sidebar ๋Š” ์ข‹์€ ๊ตฌ์„ฑ ์š”์†Œ์ด์ง€๋งŒ ํŽ˜์ด์ง€ ์Šคํฌ๋กค๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์„ ๊นจ๋œจ ๋ฆฌ๋ฏ€๋กœ ๊ฝค ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ„ฐ์น˜ ์žฅ์น˜์—์„œ ์Šค ์™€์ดํ”„ ์ง€์›์„ ์„ ํ˜ธํ•˜๋Š” ํ†ตํ•ฉ ์‚ฌ์ด๋“œ ๋ฐ”๋Š” 3.0์— ๋Œ€ํ•œ ๋‚˜์˜ ๊ฐ€์žฅ ํฐ ์†Œ์›์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

@JesperWe ๋‹น์‹ ์ด ํ•„์š”ํ•œ ๊ฒƒ์€ Layout.Sider ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@benjycui ์‚ฌ์‹ค ์ €๋Š” Sider๋ฅผ ๋ช‡ ๋‹ฌ ๋™์•ˆ ๋ณด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. 2.6 ์ดํ›„ ์‚ฌ์šฉ์ž ์ง€์ • ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ด์ „๋ณด๋‹ค ๋” ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ์ฝ˜ํ…์ธ  ์—ด์ด ํ‘œ์‹œ ๋  ๋•Œ ์ข์•„ ์ง€๋„๋ก ์••์ถ•ํ•˜๋ฏ€๋กœ ์‚ฌ์ด๋“œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์†Œํ’ˆ์ด์žˆ๋Š” ์‚ฌ์ด๋“œ ๋ฐ”์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋„๋ก ํ™•์žฅ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • cover: true ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ๋ฅผ ์••์ฐฉํ•˜๋Š” ๋Œ€์‹  ์ƒ๋‹จ์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • mask: true -Sider๊ฐ€ ๋งจ ์œ„์—์žˆ์„ ๋•Œ ํŽ˜์ด์ง€์˜ ๋ฎ์ง€ ์•Š์€ ๋ถ€๋ถ„์— ๋งˆ์Šคํฌ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • maskCloseable: true ์™ธ๋ถ€์—์„œ ํด๋ฆญํ•˜๋ฉด ์ ‘ ํžˆ๊ฒŒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งˆ์นจ๋‚ด ๊ฟˆ์˜ ์„ธ๊ณ„์—์„œ

  • ํ„ฐ์น˜ ์žฅ์น˜๋ฅผ ๋” ์ž˜ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด swipeable: true (ํ•˜์ง€๋งŒ antd๋ฅผ ๋ฐ์Šคํฌํ†ฑ ์šฉ์œผ๋กœ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ antd ์™ธ๋ถ€์—์„œ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค).

@benjycui @JesperWe Layout.Sider ๋ฐ๋ชจ์—์„œ Sider๊ฐ€ ๋ชจ๋ฐ”์ผ์—์„œ ์—ด๋ฆด ๋•Œ ์ฝ˜ํ…์ธ ๊ฐ€ ์••์ฐฉ๋ฉ๋‹ˆ๋‹ค (๋‚˜์œ).

์ฝ˜ํ…์ธ ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€์–ด ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ฝ˜ํ…์ธ  ์œ„์— Sider๋ฅผ ๋ฐฐ์น˜ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋˜ ๋‹ค๋ฅธ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ ๋ฉ”์ด์ € ๋ฒ„์ „์—์„œ ์ˆ˜ํ–‰ํ•˜๊ณ  ์กฐ์–ธ์„ ์ œ๊ณตํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค .

@JesperWe ๊ทธ๋ž˜์„œ, ํ•„์š”ํ•œ ๊ฒƒ์€ Drawer ์™€ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋…ผ์˜ํ•˜์ง€ ๋ง๊ณ  ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด์–ด ๋…ผ์˜ํ•˜์‹ญ์‹œ์˜ค.

@benjycui Ok ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‚ด 3.0 ๊ฟˆ์„ ๋‹ค์‹œ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. :-) : Drawer ์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด antd์— ํ†ตํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜๊ณ  ๋กค์—… ์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒจ์ปค๋กœ ๊ณ ๋ ค

๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.
https://medium.com/webpack/webpack-and-rollup-the-same-but-different-a41ad427058c

๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜๊ณ  ๋กค์—…์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒจ์ปค๋กœ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

2.x์—์„œ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋Š๋ผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ ์ด ์•„์ด๋””์–ด๋ฅผ ๋…ผ์˜ํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์ด์Šˆ๋ฅผ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค @plandem

less๋ฅผ https://github.com/styled-components/styled-components ๋กœ ๋ฐ”๊พธ์‹ญ์‹œ์˜ค.

์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • autoprefixer ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” postcss https://github.com/styled-components/styled-components/blob/master/src/utils/autoprefix.js#L6 ๊ณผ ๋น„๊ตํ•  ๋•Œ ๋งค์šฐ ์•ˆ์ •์ ์ด์ง€ ์•Š์„ ์ˆ˜
  • ์šฐ๋ฆฌ๋Š” ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์ „์ฒด ํ˜„์žฌ CSS ํด๋ž˜์Šค ์ด๋ฆ„์„ ์œ ์ง€ํ•ด์•ผํ•˜์ง€๋งŒ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์Šคํƒ€์ผ์— ๋Œ€ํ•œ ์ž์ฒด ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ try ์กด์žฌํ–ˆ๊ณ  ํ˜ธํ™˜์„ฑ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ณ ๋ คํ•ด์•ผ ํ•  ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์ „์ฒด ํ˜„์žฌ CSS ํด๋ž˜์Šค ์ด๋ฆ„์„ ์œ ์ง€ํ•ด์•ผํ•˜์ง€๋งŒ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์Šคํƒ€์ผ์— ๋Œ€ํ•œ ์ž์ฒด ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๊นŒ?

์‚ฌ์‹ค ์ด๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ˜„์žฌ CSS ํด๋ž˜์Šค ์ด๋ฆ„์€ ํ˜ธํ™˜์„ฑ์„์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ test (์˜ˆ : ํšจ์†Œ)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ์„ ํƒ์ž์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์„ ์ง€์ผœ์•ผํ•ฉ๋‹ˆ๋‹ค.

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

Hiya, ์ €๋Š” ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ์˜ ํ•ต์‹ฌ ๊ธฐ์—ฌ์ž ์ค‘ ํ•œ ๋ช…์ด๋ฉฐ์ด ์Šค๋ ˆ๋“œ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์—ด๋ฆฐ ๋ฌธ์ œ (์œ„ ์ฐธ์กฐ)๋กœ ์ธํ•ด์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ SC๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ ค์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ์—ฐํžˆ์ด ๋Œ€ํ™”๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. : wink : โ€“ ์ด์ œ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ์ณ๋‘๊ณ 

autoprefixer ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” postcss์— ๋น„ํ•ด ์‹ ๋ขฐ์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์‹ ์ค‘ํ•˜๊ฒŒ stylis ๋ฅผ ์„ ํƒ ํ–ˆ์œผ๋ฉฐ์ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š”

๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์€ ์‚ฌ์šฉ ์ค‘์ด ์•„๋‹ˆ๋ฉฐ ์ง€๊ธˆ btw๋กœ ์‚ญ์ œ๋˜์—ˆ์œผ๋ฉฐ inline-style-prefixer๊ฐ€์žˆ๋Š” ์ด์ „ ์ž๋™ ์ ‘๋‘์‚ฌ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์กฐ์ฐจ๋„ @rofrischmann์˜ css-in-js ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ํ†ตํ•ด ๋งค์šฐ ์‹ ๋ขฐํ•  ์ˆ˜์žˆ๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

๋˜๋Š” ์ผ๋‹จ css-in-js๋ฅผ ์„ ํƒํ•˜๋ฉด px-to-rem๊ณผ ๊ฐ™์€ post-css ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์˜ ํŽธ๋ฆฌํ•จ์„ ์žƒ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์˜ ๋ณด๊ฐ„์—์„œ๋Š” ์•„๋ฌด JS ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ๋Œ€์ฒด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ CSS-in-JS์˜ lodash์™€ ๊ฐ™์€ "polished"๋ผ๋Š” ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ SASS / LESS์—์„œ ๊ธฐ๋Œ€ํ•  ์ˆ˜์žˆ๋Š” ๋ชจ๋“  ๋ฏน์Šค ์ธ (์˜ˆ : ๋„์šฐ๋ฏธ ํ•จ์ˆ˜)๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. https : // polished. js.org

(์‹ค์ œ๋กœ ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด PostCSS๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ”Œ๋Ÿฌ๊ทธ์ธ btw๋ฅผ ์ง€์›ํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค)

์šฐ๋ฆฌ๋Š” ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ์ „์ฒด ํ˜„์žฌ CSS ํด๋ž˜์Šค ์ด๋ฆ„์„ ์œ ์ง€ํ•ด์•ผํ•˜์ง€๋งŒ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์Šคํƒ€์ผ์— ๋Œ€ํ•œ ์ž์ฒด ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๊นŒ?

์‚ฌ์šฉ์ž ์ •์˜ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ฒจ๋ถ€ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ .attrs ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ตฌ์„ฑ ์š”์†Œ์— ์ถ”๊ฐ€ ์†Œํ’ˆ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด :

const ButtonLink = styled.a.attrs({
  className: 'your-custom-extra-classname'
})`
   ... // css and stuff
`

๋” ๋งŽ์€ ์žฅ์ ๊ณผ ๊ธฐ๋Šฅ :

  • CSS ๋งŒ ์ž‘์„ฑํ•˜๊ณ  (์ด๋ฏธ ์•Œ๊ณ ์žˆ์„ ์ˆ˜๋„ ์žˆ์Œ) ์œ ์ผํ•œ ์ถ”๊ฐ€๋Š” ์•ฐํผ์ƒŒ๋“œ์™€ ์ค‘์ฒฉ์ž…๋‹ˆ๋‹ค.
  • ์Šคํƒ€์ผ + ๊ตฌ์„ฑ ์š”์†Œ ๋งคํ•‘์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๊ฒƒ์ด ๊ตฌ์„ฑ ์š”์†Œ
  • css ๋„์šฐ๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏน์Šค ์ธ / ๊ณต์œ  ์Šคํƒ€์ผ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ๋” ํ•„์š”ํ•˜์‹œ๋ฉด ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์ƒˆ๋กœ์šด ์›น ์‚ฌ์ดํŠธ๋ฅผ ํ™•์ธํ•˜์„ธ์š” : 100 : https://styled-components.com

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

ํ˜„์žฌ CSS ํด๋ž˜์Šค ์ด๋ฆ„์€ ํ˜ธํ™˜์„ฑ์„์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ test (์˜ˆ : ํšจ์†Œ)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ์„ ํƒ์ž์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค์„ ์ง€์ผœ์•ผํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ์—์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํด๋ž˜์Šค ์„ ํƒ๊ธฐ๋Š” ๋Œ€์‹  ํ‘œ์‹œ ์ด๋ฆ„ ์„ ํƒ๊ธฐ๋กœ ๋Œ€์ฒด ๋  ์ˆ˜์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ชจ๋“  ํ…Œ์ŠคํŠธ์— ํ•ด๋‹น๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์„ ๊บผ๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜์žˆ๋Š” ํ•œ ๊ณณ ์€ ํ…Œ๋งˆ ๋ฅผ

๋‚˜๋Š” ๋‘ ๋ฒˆ์งธ @philpl -Ant Design์—์„œ ์Šคํƒ€์ผ๋ง์„ ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๋งŒ๋“œ์‹ญ์‹œ์˜ค. ํ˜„์žฌ๋Š” ์ •๋ง ๊ณ ํ†ต ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. styled-components ๋Œ€๋‹จํ•ฉ๋‹ˆ๋‹ค.

styled-component ๋ฆฌํŒฉํ„ฐ๋งํ•˜๋ฉด https://github.com/ant-design/ant-design/issues/4998 ์ด ๋ฌธ์ œ๋ฅผ ๋™์‹œ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ถ”์‹  : ์ด๊ฒƒ์€ styled-component ๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ง€ ์šฐ๋ฆฌ๊ฐ€ ์ผ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋™์‹œ์— ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ :

image

์ด๊ฒƒ์ด ์ œ๊ฐ€ ํ˜„์žฌ React ํ”„๋กœ์ ํŠธ์—์„œ Ant Design์„ ์Šคํƒ€์ผ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. _entire_ Ant Design ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์Šคํƒ€์ผ๋งํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ํฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” create-react-app ์—์„œ LESS ์ „์ฒ˜๋ฆฌ๊ธฐ๋กœ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์€ ์ผ์ข…์˜ ๊ณ ํ†ต์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

// <strong i="7">@flow</strong>

import { injectGlobal } from 'styled-components';
import Color from 'color';

/*
 * We'll start with just one theme for now. Define colors and other styles here.
 * More themes can be easily added later. Look in ./App.js to see where this
 * theme is actually used.
 */

const mainTheme = {
  primaryColor: Color('#fd3d57'),
  primaryTextColor: Color('#fff'),
};

const defaultTheme = mainTheme;

// Inject global styles - seems to be the only way to customize Ant Design
// PLEASE ADD STYLES IN ALPHABETICAL ORDER for everyone's sanity. Thanks.
injectGlobal`
  .ant-btn {
    &:hover {
      border-color: ${defaultTheme.primaryColor
        .lighten(0.2)
        .toString()} !important;
      color: ${defaultTheme.primaryColor.lighten(0.2).toString()} !important;
    }

    &:active {
      border-color: ${defaultTheme.primaryColor
        .darken(0.2)
        .toString()} !important;
      color: ${defaultTheme.primaryColor.darken(0.2).toString()} !important;
    }
  }

  .ant-btn-primary {
    background-color: ${defaultTheme.primaryColor.toString()} !important;
    border-color: ${defaultTheme.primaryColor.toString()} !important;
    color: ${defaultTheme.primaryTextColor.toString()} !important;

    &:hover {
      background-color: ${defaultTheme.primaryColor
        .lighten(0.2)
        .toString()} !important;
      border-color: ${defaultTheme.primaryColor
        .lighten(0.2)
        .toString()} !important;
      color: ${defaultTheme.primaryTextColor.toString()} !important;
    }

    &:active {
      background-color: ${defaultTheme.primaryColor
        .darken(0.2)
        .toString()} !important;
      border-color: ${defaultTheme.primaryColor
        .darken(0.2)
        .toString()} !important;
      color: ${defaultTheme.primaryTextColor.toString()} !important;
    }
  }

  .ant-btn-clicked:after {
    border: 0 solid ${defaultTheme.primaryColor.toString()} !important;
  }

  .ant-switch-checked {
    background-color: ${defaultTheme.primaryColor.toString()} !important;
    border-color: ${defaultTheme.primaryColor.toString()} !important;
  }
`;

export default defaultTheme;

Ant Design์ด styled-components ์™€ ํ˜ธํ™˜๋˜๋„๋ก ๋งŒ๋“  ๊ฒฝ์šฐ <ThemeProvider theme={primaryTheme}> ์•ฑ์„ ๋ž˜ํ•‘ํ•˜๋ฉด ๊ทธ์— ๋”ฐ๋ผ ์Šคํƒ€์ผ์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋˜์ ธ ๊ทธ๋ƒฅํ•˜๊ณ  ์‹ถ์€ ํŽ ๋ผ์„ ์˜ ์Šคํƒ€์ผ - ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋Œ€์•ˆ์œผ๋กœ @rofrischmann์— ์˜ํ•ด. ๋” ๋ชจ๋“ˆํ™” ๋˜๊ณ  ๋น ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งŽ์€ ๊ธฐ๋Šฅ ๊ณผ ์ž‘์€ ์„ค์น˜ ๋ฉด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ cloudflare ๋Š” ์Šคํƒ€์ผ์ด ์ง€์ •๋œ ๊ตฌ์„ฑ ์š”์†Œ ๋Œ€์‹  UI๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์ด ๋ฌด์—‡์„ ๊ฒฐ์ •ํ•˜๋“ , antd๊ฐ€ css-in-js ์†”๋ฃจ์…˜์„ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณด๋ฉด ์ •๋ง ๊ธฐ์ฉ๋‹ˆ๋‹ค.

styled-components ์€ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํ˜„๋Œ€์ ์ธ ๋ชจ๋“ˆ ์‹ UI ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋” ๋‚˜์€ ์„ ํƒ์ž…๋‹ˆ๋‹ค.
๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์™ธ๋ถ€ CSS ํŒŒ์ผ์—†์ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ตœ์†Œํ•œ์˜ ํ•„์ˆ˜ ์Šคํƒ€์ผ๋กœ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[email protected] ์ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

https://github.com/ant-design/ant-design/tree/antd-3.0

@benjycui @yesmeck @ ddcat1115 @RaoHai

cc @nikogu

# 4853 ์ถ”๊ฐ€?

# 4853 ์ถ”๊ฐ€?

API์˜ ์ผ๋ถ€๋กœ key ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  API ์ด๋ฆ„์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ๋•Œ๊นŒ์ง€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ

key => id
expandedKeys => expandedIds
selectedKeys => selectedIds
....

๋ธŒ๋ ˆ์ดํ‚น ์ฒด์ธ์ง€์ด์ง€๋งŒ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋ธŒ๋ ˆ์ดํ‚น ์ฒด์ธ์ง€๋Š” antd-codemod ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” # 4853์—์„œ ๊ณ„์† ๋…ผ์˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TypeScript๋กœ ๋ฐ๋ชจ ๋‹ค์‹œ ์ž‘์„ฑ

๋ฐ๋ชจ๋Š” Typescript ์ „์šฉ์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด JS์™€ Typescript ๋ชจ๋‘์ž…๋‹ˆ๊นŒ? ๋‘˜ ๋‹ค ์œ ์ง€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

https://github.com/react-bootstrap/react-overlays/issues/188

rc-trigger ์ด React 16์—์„œ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

styled-components ๋˜๋Š” ์œ ์ง€ ๊ด€๋ฆฌ์ž / ๊ณต๋™ ์ž‘์—…์ž์˜ css-in-js ์†”๋ฃจ์…˜์ด ์—ฌ์ „ํžˆ ์˜ต์…˜์ž…๋‹ˆ๊นŒ?
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ณ  ๋ฆฌํŒฉํ† ๋ง์„ ๋•๊ณ  ์‹ถ๋‹ค :)

๋” ์ ์€ ํŒŒ์ผ์„ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ์ž‘์—…์ด ๋„ˆ๋ฌด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— antd 3์—์„œ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋„์ž…ํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๋Š” antd์˜ ์ฝ”๋“œ๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ณ  antd์˜ ๊ตฌ์„ฑ ์š”์†Œ์— ์Šคํƒ€์ผ์„ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ˆ„๊ตฐ๊ฐ€ ๊ด€์‹ฌ์ด์žˆ๋Š” ๊ฒฝ์šฐ antd์™€ ํ•จ๊ป˜ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ https://github.com/yesmeck/styled-antd ์˜ ์˜ˆ๊ฐ€

@codepunkt @yesmeck ์€ ๋งค๋ ฅ์ ์ธ antd์˜ ์˜ˆ๋ฅผ๋ณด๊ณ  ์‹ถ์–ดํ•ฉ๋‹ˆ๋‹ค.

@yesmeck @ afc163 CSS-in-JS๋ฅผ ์œ„ํ•ด JSS๋ฅผ ์‚ฌ์šฉํ•˜๋Š”
์—ฌ๊ธฐ์— ๋‚˜์—ด๋œ ์žฅ์  ์ด ์Šคํƒ€์ผ ์ด

์•„๋งˆ๋„ ํˆด๋ง ์ƒํƒœ๊ณ„์™€ ๋” ๊ด€๋ จ์ด ์žˆ์„์ง€ ๋ชจ๋ฅด์ง€๋งŒ antd 3.0์ด babel 7๊ณผ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ 7.0์—์„œ ๊ณ„ํš๋œ ๋ฐ”๋ฒจ ํƒ€์ž… ์Šคํฌ๋ฆฝํŠธ ๋‚ด์žฅ ์ƒ์„ฑ๊ณผ ํ•จ๊ป˜.
create-react-app์œผ๋กœ antd / typescript ์‚ฌ์šฉ์„ ํฌ๊ฒŒ ๋‹จ์ˆœํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

IE6-8, IE11 ์ดํ•˜์˜ ๋ชจ๋“  ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

CSS ํŒŒ์ผ์„ ๋” ์–‡๊ณ  ๋น ๋ฅด๊ฒŒ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. React๋Š” ๋ฒ„์ „ 9 ์ดํ•˜์˜ IE๋„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ .clearfix, -ms-filter ๋“ฑ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ant๋Š” ์ด๋ฏธ ๊ณต์‹์ ์œผ๋กœ IE9 + ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

2017 ๋…„ 10 ์›” 12 ์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 7:58, Andreas Cederstrรถm <
[email protected]> ์ž‘์„ฑ :

IE6-8, IE11 ์ดํ•˜์˜ ๋ชจ๋“  ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

CSS ํŒŒ์ผ์„ ๋” ์–‡๊ณ  ๋น ๋ฅด๊ฒŒ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
๋ฒ„์ „ 9 ์ดํ•˜์˜ IE๋„ ์ง€์›ํ•˜๋ฏ€๋กœ .clearfix, -ms-filter ๋“ฑ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โ€”
์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ๋…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/ant-design/ant-design/issues/5570#issuecomment-336107229 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ADUIEIQi6tXJB0336SQrtMrMCIHfvjNuks5srf7pgaJpZM4MuJYf
.

ํ™•์ธ. antd.css (https://cdnjs.cloudflare.com/ajax/libs/antd/2.13.6/antd.css)์— ์ œ๊ฑฐํ•ด์•ผ ํ•  IE6-8 ํ•ดํ‚น์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์˜ˆ:

  /* IE6-IE8 */
  -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11=1, M12=0, M21=0, M22=1)";
  zoom: 1;
.clearfix {
  zoom: 1;
}

@andriijas ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด antd-3.0 ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ํ•ดํ‚น์ด ๋ณด์ด๋ฉด PR ๋งŒ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ์™€ ๊ฐœ๋ฏธ ํ˜•์‹์— ํฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. fieldDecorator๋กœ ์žฅ์‹ ๋œ ์–‘์‹ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์Šคํƒ€์ผ์ด ์ง€์ •๋œ ๋ž˜ํผ์— ๋ž˜ํ•‘ํ•˜๋ฉด ์–‘์‹ ํ•„๋“œ๊ฐ€ ์ž‘๋™์„ ๋ฉˆ ์ถฅ๋‹ˆ ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ •๋ง ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜์ง€๋งŒ ์ธ๋ผ์ธ ์Šคํƒ€์ผ๋กœ <div> ๋กœ ๋ž˜ํ•‘ํ•ด์•ผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ์งœ์ฆ๋‚˜ ๋„ค์š” ...

์ฃผ ์„ ํƒ๊ธฐ !!!

@malekjaroslav ๋Š” ์ž˜๋ชป๋œ ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. styled-components repo์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์„œ ๋„์™€ ๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@benjycui antd3.0 ์˜ ๋ฐ˜์‘ ํ˜• ๋„์šฐ๋ฏธ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ์ด์™€ ๊ฐ™์€ https://github.com/twbs/bootstrap/blob/v4-dev/scss/utilities/_display.scss in react

import { Utils } from "antd";
const { Display } = Utils;

const Foo = props => (
  <h1>
    My idiotic example header
    <Display xs="block" sm="inline" print="inline-block">my subheader is fantastic</Display>
  </h1>
);

const Zoo = props => (
  <h1>
    My idiotic example header
    <Display xs={{display: "block", className: ..}} sm="inline" print="hidden">my subheader is fantastic</Display>
  </h1>
);

๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ์ด๋‹ˆ์…œ PR์„ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌธ์„œ ๋ฒˆ์—ญ ๋“ฑ์— ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@andriijas ๋Š” https://github.com/contra/react-responsive๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Ant Design Specification์„ ๋”ฐ๋ฅด๋Š” UI ์ปดํฌ๋„ŒํŠธ๋ฅผ antd์— ์ถ”๊ฐ€ํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜„

์˜ˆ, ant-design-pro ์ €์žฅ์†Œ์—์„œ ๋ดค์Šต๋‹ˆ๋‹ค. antd์—์„œ ์ค‘๋‹จ ์ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ž˜ํผ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ๋ฐฉ๊ธˆ [email protected]์„ ์ถœ์‹œ https://github.com/ant-design/ant-design/issues/8233 ์ฐธ์กฐ

antd pro ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ ๋ฒ„์ „์˜ ์ถœ์‹œ๋ฅผ ๊ณ ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ์›”๋ง์— ์ถœ์‹œ ํ•  ๊ณ„ํš์ž…๋‹ˆ๊นŒ?

ํ›Œ๋ฅญํ•œ ํ”„๋ŸฐํŠธ ์—”๋“œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Google์˜ ์ž๋ฃŒ๋ฅผ ๋Šฅ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด antd pro ๊ตฌ์„ฑ ์š”์†Œ ์‚ฌ์šฉ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋ฐฉํ•ด๊ฐ€๋˜๋Š”์ด ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด ์ •๋ง ํฅ๋ถ„๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ๋˜๋Š” ๋ฆด๋ฆฌ์Šค ๊ธฐ๊ฐ„์ด 11 ์›” ๋ง์ž…๋‹ˆ๊นŒ?

๋ฉ‹์ง„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณต ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Google ๋จธํ‹ฐ๋ฆฌ์–ผ UI๋ฅผ ๋– ๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://medium.com/ant-design/announcing-ant-design-3-0-70e3e65eca0c

Ant Design 3.0 ์ถœ์‹œ! ๐ŸŽ‰ ๐ŸŽ‰ ๐ŸŽ‰

ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ์Šคํƒ€์ผ ๊ตฌ์„ฑ ์š”์†Œ / ๊ฐ์ • / ํŽ ๋ผ ์ง€์›์— +1.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰