
рд╣рдо рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рдирдП рдкрд╛рдВрдЪрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП рдмрд╣реБрдд рдЦреБрд╢ рд╣реИрдВ! рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд┐рдЫрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐ рд░рд┐рдПрдХреНрдЯ ^ 16.8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдкрд╛рдВрдЪрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмреАрдЯрд╛ рдХреЛ рдЕрднреА рдЖрдЬрд╝рдорд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
npm install styled-components@beta
рд╣рдореЗрдВ React рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ React.hooks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд react@^16.8 react-dom@^16.8 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-is@^16.8
рдФрд░ рдЕрдм рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ!
рдЬрд▓реНрджреАред рдФрд░ рднреА рддреЗрдЬред рд╕реНрдЯрд╛рдЗрд▓-рдЕрд╡рдпрд╡ред
рдЬрдм рд╣рдордиреЗ 2 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛, рддреЛ рд╣рдордиреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрдИ рд░рд┐рд▓реАрдЬ рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХрд╛рдо рдХреЛ рдмрд╣реБрдд рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 3.1 рдореЗрдВ рдЧрддрд┐ рдореЗрдВ рджрд╕ рдЧреБрдирд╛ рд╡реГрджреНрдзрд┐ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 4 рдореЗрдВ рдПрдХ рдФрд░ 25% рддреНрд╡рд░рдг рдорд┐рд▓рд╛ред
рдкрд╛рдВрдЪрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рддрдХ, рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдм рдФрд░ рднреА рддреЗрдЬ рд╣реИ! 4 рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд╣рдореЗрдВ рдорд┐рд▓рд╛:
- 19% рдЫреЛрдЯреЗ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХрд╛ рдХреЛрдб рдЖрдХрд╛рд░ (16.2kB рдмрдирд╛рдо 13.63kB min + gzip) code
- рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдкрд░ 18% рддреЗрдЬреА рд╕реЗ рдЖрд░рдВрднреАрдХрд░рдг
- 17% рддреЗрдЬреА рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛
- 45% (!!!) рддреЗрдЬреА рд╕реЗ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдкрд╛рджрди
рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдмрд╕реЗ рддреЗрдЬ рд╕реАрдПрд╕рдПрд╕-рдЗрди-рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдФрд░ рднреА рддреЗрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рдВрдЪрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдиреЗрддрд╛рдУрдВ рдореЗрдВ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдордЬрдмреВрдд рдХрд░ рд▓реА рд╣реИ:

рдШрдЯрдХ рд╡реГрдХреНрд╖ рдХрд╛ рдкреНрд░рд╛рд░рдВрднред рдХрдо рдмреЗрд╣рддрд░ рд╣реИред
рдЧрддрд┐ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реГрджреНрдзрд┐ рд╣рдорд╛рд░реЗ рдирдП рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рдереАред рдЗрд╕реЗ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕рдЯреАрдХрддрд╛ (рд╢реБрджреНрдзрддрд╛) рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рд╡реНрдпрд╛рдкрдХ рдЖрдВрддрд░рд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдХреБрдЫ рдХреАрдбрд╝реЗ рдЕрднреА рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред рд╣рдо рд╕рдореБрджрд╛рдп рдХреЛ рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рднреА рдХрд╣рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд░рд┐рд▓реАрдЬ рдпрдерд╛рд╕рдВрднрд╡ рд╕реНрдерд┐рд░ рд╣реЛред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ рд╣реИ:
npm install styled-components@beta
рдпрджрд┐ рдЖрдк рдЬреЗрд╕реНрдЯ-рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмреАрдЯрд╛ рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рдЖрдкрдХреЗ рд╕рднреА рд╕реНрдЯрд╛рдЗрд▓ рдХрд┐рдП рдЧрдП рдШрдЯрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ React.hooks рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджреГрд╢реНрдп рдФрд░ рд╕рд░рд▓ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реНрдЯрд╛рдЗрд▓рд┐рд╢ TagLine
рдШрдЯрдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ (v4) рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ DevTools рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ:
<TagLine> <StyledComponent forwardedRef={null}> <Context.Consumer> <Context.Consumer> <h2 className=тАЭH2-sc-1izft7s-7тАЭ>Hello world</h2> </Context.Consumer> </Context.Consumer> </StyledComponent> </TagLine>
рдФрд░ рдЗрд╕рд▓рд┐рдП - рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж (v5)
<TagLine> <h2 className=тАЭH2-sc-1izft7s-7тАЭ>Hello world</h2> </TagLine>
рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ? рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╡реЗрджрди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

рд╕реНрдЯрд╛рдЗрд▓рдЯреЙрдХ-рдХреЙрдорд░реНрд╕ рдбреЙрдЯ рдХреЙрдо рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рджреЗрд╡рдЯреВрд▓ рдШрдЯрдХ рдЯреНрд░реАред рдмрд╛рдИрдВ рдУрд░ рдЪреМрдерд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рджрд╛рдИрдВ рдУрд░ рдкрд╛рдВрдЪрд╡рд╛ рд╣реИред рд╡рд╛рд╣! (рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп)
рдЬреЗрд╕рд┐рдХрд╛ рдлреНрд░реЗрдВрдХреЛ рдФрд░ рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдирд╛рдирдмрд░реНрдЧ рдХреЛ React.Hooks рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
рдирдпрд╛ рд╣реИред рдирдпрд╛ рднреАред StyleSheetManager
рдкрд╛рдВрдЪрд╡реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ <StyleSheetManager />
рдХреЛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрджреНрдпрддрди рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдЬрд┐рд╕рд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд╣рдорд╛рд░реЗ рд╕реАрдПрд╕рдПрд╕ рдкрд╛рд░реНрд╕рд░ (рд╕реНрдЯрд╛рдЗрд▓рд┐рд╕) рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реАред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрдг рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдорд░реНрдерди рд░рд╛рдЗрдЯ-рдЯреВ-рд▓реЗрдлреНрдЯ рдХреЗ рд▓рд┐рдПред
RTL рд╕рдкреЛрд░реНрдЯ
рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдмрд╛рдПрдБ-рд╕реЗ-рджрд╛рдПрдБ рджрд┐рд╢рд╛ рдХреЛ рджрд╛рдПрдБ-рд╕реЗ-рдмрд╛рдПрдБ рджрд┐рд╢рд╛ рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
import { StyleSheetManager } from 'styled-components'; import stylisRTLPlugin from 'stylis-rtl'; <StyleSheetManager stylisPlugins={[stylisRTLPlugin]}> <App /> </StyleSheetManager>
рдпрд╣ рд╕рдм рд╡рд╣рд╛рдБ рд╣реИ! рд╣рдо рдЙрди рдЕрд╡рд╕рд░реЛрдВ рдкрд░ рдмрд╣реБрдд рдкреНрд░рд╕рдиреНрди рдФрд░ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реИрдВ рдЬреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдЦреБрд▓рддреЗ рд╣реИрдВред рдЕрдм рдЖрдк рд╕реНрдЯрд╛рдЗрд▓ рдХрд┐рдП рдЧрдП рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рдорд╣рд╛рд╢рдХреНрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ!
рд╣рдорд╛рд░рд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ 39 рдорд┐рд▓рд┐рдпрди рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕реИрдХрдбрд╝реЛрдВ рд╣рдЬрд╛рд░реЛрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдХрдИ рдирд┐рдЬреА рд▓реЛрдЧреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХрд┐ GitHub рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред
рдЪреВрдВрдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛрд░ рдЯреАрдо, рд╣рдо рдЧрдВрднреАрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд▓реЗрддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд░рдЦрд░рдЦрд╛рд╡ рдФрд░ рд╕рдорд░реНрдерди рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ рд╣реИред рдФрд░ рд╣рдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИрдВ, рдХрд┐рд╕реА рдХреЛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдореНрдореЗрд▓рдиреЛрдВ рдФрд░ рд╢рд┐рдЦрд░ рд╕рдореНрдореЗрд▓рди рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдпрд╛ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдПред
рдпрджрд┐ рдЖрдк рдХрд╛рдо рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ OpenCollective рдкрд░ рд╣рдорд╛рд░рд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рдо рдЗрд╕ рд╡рд░реНрд╖ рдЕрдкрдиреА рдЯреАрдо рдХреЛ рдПрдХ рдХрдорд░реЗ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдпрд╣ рд╕рдорд░реНрдерди рд╣рдореЗрдВ рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдкреВрд░реА рдЯреАрдо рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдкрд╛рдВрдЪрд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВрдЧреЗред рдФрд░, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕реНрдЯрд╛рдЗрд▓рд┐рд╢ рд░рд╣реЗрдВ!