рдмреЗрд╣рддрд░, рддреЗрдЬ, рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА: рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ v4

рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓реЗрдЦрдХ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ v4 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╡рд╣, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреА рдУрд░ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓-рдХрд▓рдкреБрд░реНрдЬреЛрдВ рдореЗрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ as рдФрд░ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдПрдкреАрдЖрдИ рд╣реИред рд▓рд╛рдпрдмреНрд░реЗрд░реА рдиреЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдорд╛рд░реНрдЧ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рд╣реИред .extend , рдпрд╣ StrictMode React v16 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ рдФрд░ рдмреЗрд╣рддрд░, рддреЗрдЬ рдФрд░ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдмрди рдЧрдпрд╛ рд╣реИред



рд╕реНрдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдШрдЯрдХ v4


рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 npm install styled-components@beta 

рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдирдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЧрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреБрдЫ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВред рдпрд╣рд╛рдВ рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреИрдВрдЬ рд╣реИ v4.0.0-beta.0ред

рдЗрд╕ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рд░рд┐рд▓реАрдЬрд╝ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

  • рдЖрдХрд╛рд░ рдХрдо рдХрд░рдирд╛ рдФрд░ рдЧрддрд┐ рдмрдврд╝рд╛рдирд╛ред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЖрдХрд╛рд░ 16.1 KB рд╕реЗ рдШрдЯрд╛рдХрд░ 15 KB рд╕реЗ рдХрдо рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЗрд╕рдХрд╛ рдЕрдВрддрд┐рдо рдЖрдХрд╛рд░ рдЖрдкрдХреЗ рдмрдВрдбрд▓ рдкрд░ рдФрд░ рдмреЗрдмрд▓ рдкреНрд▓рдЧрдЗрди рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред рдмрдврд╝рддреЗ рдЧрддрд┐ рдореЗрдВ рд▓рдЧрднрдЧ 25% рдХреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ, рдкреБрди: рдкреНрд░рддрд┐рдкрд╛рджрди рдХреА рдЧрддрд┐ - рд▓рдЧрднрдЧ 7.5%ред
  • рдирдИ createGlobalStyle API, рдЬреЛ рдкреБрд░рд╛рдиреЗ injectGlobal API рдХреЛ рд╣реЙрдЯ injectGlobal рдФрд░ рдереАрдо рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
  • рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди, .withComponent() рд▓рд┐рдП рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╡рд┐рдХрд▓реНрдкред
  • рдПрдХ рдПрдХреАрдХреГрдд styled(Comp) рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде Comp.extend рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ред
  • StrictMode React v16 рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд░рд┐рдПрдХреНрдЯ v15 рдФрд░ рдЕрдиреНрдп, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреЙрд▓реАрдлрд╝рд┐рд▓реНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╢рд╛рдпрдж рд░рд┐рдПрдХреНрдЯ v15 рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ v4 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
  • рдХрд┐рд╕реА рднреА рд╢реИрд▓реА рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП ref рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди, рдФрд░ рд░рд┐рдПрдХреНрдЯ v16 рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, innerRef рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕реНрдЯрд╛рдЗрд▓-рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмреАрдЯрд╛ рдореЗрдВ рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ рддрд╛рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рд╣реЛ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╕рд╣рд╛рдпрдХ рддрдВрддреНрд░ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рдХрд╛рд░ рд╡рд┐рд╡рд░рдг рдФрд░ рдирдП рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдЯреВрд▓ рдПрдкреАрдЖрдИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рддрдХ рдмреАрдЯрд╛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд╣рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред

рдЙрддреНрдкрд╛рджрдХрддрд╛


рдЬрдм рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╣рдордиреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрд░ рдПрдкреАрдЖрдИ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ред рддрдм рд╕реЗ, рдкреИрдЪ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдордиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, v3.1 рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ 10 рдЧреБрдирд╛ рд╡реГрджреНрдзрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд╣реИред

рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдХрд╛рдо рдЬрд╛рд░реА рд╣реИред рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдФрд░ рдХреЛрдб рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрддреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрдВрддрд░рд┐рдХ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рджреЛрдиреЛрдВ рдЧрд╣рд░реЗ рдФрд░ рдЪреМрдбрд╝реЗ рдШрдЯрдХ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ v4 рдХреА рдмрдврд╝рддреА рдЧрддрд┐ рд▓рдЧрднрдЧ 25% рдмрдврд╝ рдЧрдИред рдбрд╛рдпрдиреЗрдорд┐рдХ рд╕реНрдЯрд╛рдЗрд▓ рдЕрдкрдбреЗрдЯ рд▓рдЧрднрдЧ 7% рддреЗрдЬ рд╣реИрдВред рдпрд╣рд╛рдВ рддреАрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ v3 рдФрд░ v4 рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХреА рдЧрдИ рд╣реИред рдкрд╣рд▓реЗ рджреЛ рдмрдврд╝рддреЗ рдШрдЯрдХ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдЕрдзреНрдпрдпрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рддреАрд╕рд░реА рдЪрд┐рдВрддрд╛ рдЧрддрд┐рд╢реАрд▓ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рд╣реИред


рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ v3 рдФрд░ v4 рдкреНрд░рджрд░реНрд╢рди рддреБрд▓рдирд╛

рдПрдХ рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдпреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рджрд┐рдЦрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдврд╝рддреЗ рдЧрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдиреНрдп CSS-in-JS рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ v4 рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред


рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ v4 рдФрд░ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рджрд┐рдЦрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕рдмрд╕реЗ рддреЗрдЬ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдмрдврд╝рддреЗ рдФрд░ рдЕрджреНрдпрддрди рдЧрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХреЗ рднреАрддрд░ рд╣реИрдВред рдпрд╣ рд╕рдм рд╣рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдЕрдм рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рдпрджреНрдпрдкрд┐ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЕрдм рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧреЗ рд░рд╣реЗрдВрдЧреЗред рдпрджрд┐ рд╣рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдФрд░ рднреА рддреЗрдЬ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдЕрд╡рд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдирдИ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдПрдкреАрдЖрдИ


рд╣рдо рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдПрдХ рдирдпрд╛ рдЧреНрд▓реЛрдмрд▓ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдПрдкреАрдЖрдИ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкреБрд░рд╛рдиреЗ API, injectGlobal рдореЗрдВ рддреАрди рдЧрдВрднреАрд░ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ: рдпрд╣ рдбрд╛рдпрдиреЗрдорд┐рдХ рдЕрдкрдбреЗрдЯ, рд╣реЙрдЯ injectGlobal рдФрд░ рдереАрдо рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЕрдм рд╣рдо рдЖрдкрдХреЛ рдирдП рдЧреНрд▓реЛрдмрд▓ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдПрдкреАрдЖрдИ, рдЬреЛ рдЧрддрд┐рд╢реАрд▓ рдЕрджреНрдпрддрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдХреЛ createGlobalStyle рд▓рд┐рдП рдЖрдкрдХреЛ рдЦреБрд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 import { createGlobalStyle } from "styled-components"; const GlobalStyle = createGlobalStyle` html {   color: red; } `; export default function App() { return (   <div>     <GlobalStyle />     This is my app!   </div> ); } 

createGlobalStyle рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ createGlobalStyle рд╡реИрд╢реНрд╡рд┐рдХ рд╢реИрд▓реА рдЕрдм рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдкреЗрдбрд╝ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЕрджреНрдпрддрди рдФрд░ рдЧрд░реНрдо рд▓реЛрдб рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рджрд┐рдЦрддрд╛ рд╣реИ, рдЬрдм рдХрд┐рд╕реА рдЕрдиреНрдп рд╢реИрд▓реА рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 import { createGlobalStyle, ThemeProvider } from "styled-components"; //  ,       const GlobalStyle = createGlobalStyle` html {   background: ${p => p.backgroundColor}   color: red;   font-family: ${p => p.theme.fontFamily}; } `; export default function App() { return (   <ThemeProvider theme={{ fontFamily: "Helvetica Neue" }}>     <GlobalStyle backgroundColor="turquoise" />   </ThemeProvider> ); } 

рдШрдЯрдХреЛрдВ рдХреЗ .extend рдФрд░ "рддрд╣" рд╕реЗ рдЗрдирдХрд╛рд░


рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреА рдЗрд╕ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдПрдХ рдЖрдВрддрд░рд┐рдХ рддрдВрддреНрд░ рд╣реИ, рдЬрд┐рд╕рдХреА рдмрджреМрд▓рдд рд░реИрдкрд░реЛрдВ рдореЗрдВ рд╢реИрд▓реАрдХреГрдд рдШрдЯрдХ рдЕрдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ "рдврд╣ рдЧрдП" рд╣реИрдВ, рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдШрдЯрдХ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ StyledComp.extend рдПрдкреАрдЖрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдХрд┐ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдШрдЯрдХ рд╢реИрд▓реАрдХреГрдд рдШрдЯрдХ рдереЗред рдШрдЯрдХреЛрдВ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд "рддрд╣" рдкрд░ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬрдм styled(StyledComp) рдХрд╛ рдЙрдкрдпреЛрдЧ styled(StyledComp) рддреЛ рд╡рд╣реА рдЕрдиреБрдХреВрд▓рди рдЬреЛ StyledComp.extend рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдереЗ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ .extend рдЕрдм рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдиреЗ рдЗрд╕ API рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИред рдирддреАрдЬрддрди, рдЕрдм рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдо рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдХ рдПрдкреАрдЖрдИ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред

рдкреЙрд▓рд┐рдореЙрд░реНрдлрд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ


рдПрдХ рдФрд░ рдирдпрд╛ рдлреАрдЪрд░ рд╕реНрдЯрд╛рдЗрд▓-рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ v4 рд╣реИ, рдЬрд┐рд╕реЗ рд▓реЗрдХрд░ рд╣рдо рдмрд╣реБрдд рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реИрдВред рд╣рдо рдХрд┐рд╕реА рднреА рд╢реИрд▓реА рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 import styled from "styled-components" import { Link } from "react-router-dom" // <Component />   DOM  div const Component = styled.div` color: red; ` <Component>Hello World!</Component> //     ,      HTML-  ! <Component as="span">Hello World!</Component> <Component as={Link} to="home">Hello World!</Component> 

рдпрджрд┐ рдЖрдк рдореМрдЬреВрджрд╛ .withComponent(something) рддрдВрддреНрд░ рд╕реЗ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирдпрд╛ рдЯреВрд▓ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░, рдирдП рдЖрдВрддрд░рд┐рдХ "рддрд╣" рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдмреЗрд╕ рдШрдЯрдХ рд╕реНрдЯрд╛рдЗрд▓ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдЯрд╛рдЗрд▓реЗрд╢рди рдЦреЛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ- рдШрдЯрдХ!

 import styled from "styled-components" const RedColor = styled.div` color: red; ` const BlueBackgroundRedColor = styled(RedColor)` background: blue; ` <BlueBackgroundRedColor as="span">Hello!</BlueBackgroundRedColor> //       `span`   // <RedColor />,       // !! (.withComponent    ) 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдкрддреНрддрд┐ рдХреЗ as рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рднрдпрд╛рдирдХ рдЪреАрдЬ рд╣реИ, рдЬреЛ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд╣реАрдВ рднреА рд╕рд┐рдореЗрдВрдЯрд┐рдХ HTML рдХреЛрдб рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред <div> рдЯреИрдЧ рдХреЗ "рд╕реВрдк" рдореЗрдВ рдФрдЪрд┐рддреНрдп рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рддрдХ рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рд╕рднреА рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдореЗрдВ .withComponent рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдмрди рд╕рдХрддреА рд╣реИ, рддрдм рддрдХ рд╣рдо рдЗрд╕реЗ рдордирд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдХреНрд░рдордг рдЕрд╡рдзрд┐ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рд░рд╣реЗрдЧреА, рдФрд░ рд╣рдо, рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдореЗрдВ, .withComponent рдХреЛ рд╣рдЯрд╛ .withComponent ред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ v16 рдФрд░ рд░реЗрдлрд░реА


рд░рд┐рдПрдХреНрдЯ v16 рдПрдкреАрдЖрдИ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдордиреЗ рдкрд╛рдпрд╛, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐ рдирдП React.forwardRef рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо innerRef рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреБрдЫ-рдХреБрдЫ рд╕рд╛рдл-рд╕реБрдерд░реА рд╣реИрдХ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреАрдо рдХреЗ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрдм рдЖрдк рдореВрд▓ ref рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 import styled from "styled-components" const Component = styled.div` color: red; ` //    render <Component ref={element => { this.myRef = element; }} 

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рд╛рдЗрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реБрдзрд╛рд░


рд╣рдо рд╕реАрдзреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирдП @ babel / рдкреНрд░реАрд╕реЗрдЯ-рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ ред рдЗрд╕рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдм рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рд╣рд░ рдХреЛрдИ рдЕрдВрддрддрдГ рдЕрдкрдиреА рд╕рднреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдмреИрдмрд▓ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдШрдЯрдХ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓реАрдХреГрдд рдбрд┐рдмрдЧрд┐рдВрдЧ, рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдФрд░ рдмрдВрдбрд▓реЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рдордиреЗ TS рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рд╣реИред рд╕рдореБрджрд╛рдп рдЕрдм рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреА рдЧрддрд┐ рд╕реЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд┐рдирд╛ред рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛рдПрдВ рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ ред

рдкрд░рд┐рдгрд╛рдо


рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рд╕реЗ, рдЖрдкрдиреЗ рд╕реНрдЯрд╛рдЗрд▓-рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ v4 рдХреЗ рдирдП рдмреАрдЯрд╛ рдлреАрдЪрд░реНрд╕ рдФрд░ рдЙрд╕рдореЗрдВ рдХрд┐рдП рдЧрдП рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛ред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдЬреЛ рдЕрднреА рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓-рдХрдВрдкреЛрдиреЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

Source: https://habr.com/ru/post/hi422783/


All Articles