Material-ui: [рдЖрд░рдПрдлрд╕реА] рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдлрд╝рд░ре░ 2017  ┬╖  164рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mui-org/material-ui

рдХреНрдпрд╛ рд╣рдо рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?


рдкреБрд░рд╛рдиреА рддреБрд▓рдирд╛

рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдЗрд╕рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ
рдпрд╣рд╛рдБ рддреБрд▓рдирд╛ рддрд╛рд▓рд┐рдХрд╛, рдФрд░ рдЕрдЧрд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг SSR рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ!

рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ | рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ | рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЬреЗрдПрд╕рдПрд╕
------------ | ------------- | -------------
рдХреЛрдИ рдирд┐рд░реНрдорд╛рдг рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ | | рдореИрдВ
рдЫреЛрдЯрд╛ рдФрд░ рд╣рд▓реНрдХрд╛ | | рдореИрдВ
рд╡реИрд╢реНрд╡рд┐рдХ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ | | рдореИрдВ
рд╕реАрдПрд╕рдПрд╕ рдХреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ | | рдореИрдВ
рдХреЛрд▓реЛрдХреЗрдЯреЗрдб | | рдореИрдВ
рдкреГрдердХ | | рдореИрдВ
рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ | |тЬЕ
рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЖрд╕рд╛рди | | рдореИрдВ
рдереАрдорд┐рдВрдЧ | | рдореИрдВ
рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ | | рдореИрдВ
рдХреЛрдИ рдЖрд╡рд░рдг рдШрдЯрдХ рдирд╣реАрдВ | | рдореИрдВ
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╕рдорд░реНрдерди | | рдореИрдВ

рдХрд┐рдВрд╡рджрдВрддреА: = рд╣рд╛рдБ, = рдирд╣реАрдВ, = рдХрд┐рдВрдбрд╛, рдиреЛрдЯреНрд╕ рдпрд╛ рдХреЛрд╖реНрдардХ рджреЗрдЦреЗрдВ

discussion enhancement

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@oliviertassinari рд╣рдорд╛рд░реЗ рдЪрд▓ рд░рд╣реЗ рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬреИрд╕рд╛ рдХрд┐ https://github.com/mui-org/material-ui/issues/6115#issuecomment -643398897 рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдЯреАрдо рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░реЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рдпреЗ рдзреАрдорд╛ рд╣реИред рд╣рдореЗрд╢рд╛ рд░рд╣рд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рдПрдХ рджреЗрд╡ рд╣реЛрдиреЗ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдЬреЗрдПрд╕ рдиреЛрдЯреЗрд╢рди рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╕реАрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдпрд╣ рдиреМрдХрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдкреИрдХреЗрдЬ рдореЗрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрд╡реЛрдВ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ (рдореИрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЛрд▓ рд░рд╣рд╛ рд╣реВрдВ) рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рд░реЗрдЦрд╛ рдЖрддреА рд╣реИред

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

рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯреАрдо рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдиреЗ рд╕реНрдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╕реБрдирд╛ рдФрд░ рдЖрдЧреЗ рдХреА рдЬреБрддрд╛рдИ рдХреА рдФрд░ рдЕрдм рд╕рд╛рдЗрдЯ рдзреАрдореА рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдЦрд╛ рдореЗрдВ рдореЗрдХ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЯреАрдЯреАрдЖрдИ рдкрд░ 50% (10 рд╕реЗрдХрдВрдб) рдмрдЪрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдЙрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХрд╣рд╛ рдерд╛, рдЬреЗрдПрд╕ рдиреЛрдЯреЗрд╢рди рд╣рд░ рдХрд┐рд╕реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдЬреЛ рдЪрд╛рд╣реЗ рдЪреБрди рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА рдмрдирд╛рдПрдВред

рд╕рднреА 164 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@kybarg рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! CSS-in-JSS рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдХреНрд╖реЗрддреНрд░ рд╣реИ, рдЕрддреАрдд рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдк рдЕрдм рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╕реНрдпрд╛рдПрдВ рдФрд░ рд╕рдорд╛рдзрд╛рди рдмрджрд▓рддреЗ рд╣реИрдВред

рдЕрддреАрдд рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рд╣рдо JSS рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрд▓рдмреНрдз рд╡рд┐рднрд┐рдиреНрди рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд░рд╣реЗ рд╣реИрдВред

рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рдЪреБрдирд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛:

  • рдЕрдореВрд░реНрдд рдХреА рд▓рд╛рдЧрддред css-in-js-perf-tests рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрд╕рд╛рдзрди рд╣реИ, рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЧреНрд▓реИрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

    • 126 kb JSS рдХреЗ рд▓рд┐рдП 22 kb рд╕реЗ рдЕрдзрд┐рдХ рдЕрдирдЬрд╝рд┐рдк рдХрд┐рдпрд╛ рдЧрдпрд╛

    • рдкрд╣рд▓реА рдмрд╛рд░ рдкреЗрдВрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдзреАрдорд╛ рд╣реИред https://github.com/MicheleBertoli/css-in-js рдХреЗ рд╕рдордХрдХреНрд╖ рдбреЗрдореЛ рдкрд░ рдкрд╣рд▓реА рдмрд╛рд░ рдкреЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, JSS 40% рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИред

  • рдХреНрд▓рд╛рд╕рдирд╛рдо рдФрд░ CSS рдбреАрдк рд╕рд┐рд▓реЗрдХреНрдЯрд░ рдкрд╛рд╡рд░ рдХреЛ рдПрдХреНрд╕рдкреЛрдЬрд╝ рдХрд░рдиреЗ рд╕реЗ рдкрд░рдлреЙрд░реНрдореЗрдВрдЯ рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП <Grid /> : #6010 рдХреЗ рд╕рд╛рдеред
  • рдХреЛрдИ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓рдЯрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ, рдЬрдмрдХрд┐ рдЬреЗрдПрд╕рдПрд╕ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИред рднрд╛рдк рд▓реЗрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реАрдорд┐рдд рд╣реИред

рджрд░рдЕрд╕рд▓, рдЬрдм @nathanmarks рдиреЗ рдЗрдирд▓рд╛рдЗрди-рд╢реИрд▓реА рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рддреЛ рд╕реНрдЯрд╛рдЗрд▓-рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдПрдХ рдЪреАрдЬрд╝ (рдореМрдЬреВрджрд╛) рднреА рдирд╣реАрдВ рдереЗред

рддреБрд▓рдирд╛ рддрд╛рд▓рд┐рдХрд╛

рд╡реИрд╢реНрд╡рд┐рдХ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ

https://github.com/cssinjs/jss-global рдХреЗ рд╕рд╛рде рдЖрдк рд╕рд╛рдорд╛рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ

const styles = {
  '<strong i="35">@global</strong> body': {
    color: 'green'
  }
}

рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЖрд╕рд╛рди

рдпрд╣ рдХреИрд╕реЗ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ? рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдкрдХреНрд╖ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЗрдВрдЬреЗрдХреНрд╢рди рдСрд░реНрдбрд░ рдЯреЗрдмрд▓ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рднреВрдорд┐ рдкрд░, рд╡реЗ рдХрд╛рдореЛрддреНрддреЗрдЬрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдорд╣рд╛рди рдПрдлрд╝реНрд░реЛрдбрд╛рдЗрдЯ рдУрд╡рд░рд░рд╛рдЗрдб рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

рдХреЛрдИ рдЖрд╡рд░рдг рдШрдЯрдХ рдирд╣реАрдВ

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

рдереАрдо

рд╣рдо рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЬреЗрдПрд╕рдПрд╕-рдереАрдо-рд░рд┐рдПрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред JSS рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп API рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╕рдорд░реНрдерди

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдХреЗ-рд╢реИрд▓реА рдПрдкреАрдЖрдИ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ!

рднрд╡рд┐рд╖реНрдп

рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЖрд╢рд╛рдЬрдирдХ рдкрде рдПрдХ рдПрдкреАрдЖрдИ рд╣реИ рдЬреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рджреЛ рдлрд╛рдпрджреЗ рд╣реЛрдВрдЧреЗ:

  • рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдХрд┐рд╕реА рднреА рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдХрдо рдпреБрдЧреНрдорд┐рдд рд╣реИ
  • рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ / рдПрдлрд╝реНрд░реЛрдбрд╛рдЗрдЯ/... рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬреЗрдПрд╕рдПрд╕ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЯреВрд▓рдмреЙрдХреНрд╕ рдЙрд╕ рдкрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реИред рдореЗрд░реА рдПрдХрдорд╛рддреНрд░ рдЪрд┐рдВрддрд╛ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд░рд╣реЗ рдУрд╡рд░рд╣реЗрдб рдХреЗ рд╕рд╛рде рд╣реЛрдЧреАред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИ?

рдореИрдВ рд▓реВрдк рдореЗрдВ @kof рдФрд░ @mxstbr рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред

@kybarg рдЕрд╕рд▓ рдореЗрдВ, рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рд╣рдо react-jss рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЬрдм рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо, рдХреНрдпрд╛ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдпрд╛ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдореЗрд░реЗ рдЕрдВрдХ рд╣реИрдВ:

  • styled-components рдЬреЗрдПрд╕рдПрд╕ рдХреЛрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЕрдкрдиреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдКрдкрд░ рджреА рдЧрдИ рддреБрд▓рдирд╛ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬреЗрдПрд╕рдПрд╕ рдХреЛрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдХреНрд╕ рдХреА рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд░рд╛рдп рд╣реИред рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рддреНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдПрдХ рдирдЬрд╝рд░ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВред
  • рд╣рдо рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдЧрддрд┐рд╢реАрд▓ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдирд┐рдпрдореЛрдВ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЗрдПрд╕рдПрд╕-рдереАрдо-рд░рд┐рдПрдХреНрдЯрд░ рдЕрднреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдЬреЛ рд╢рд╛рдпрдж рдПрдордпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИред
  • рдПрдордпреВрдЖрдИ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд┐рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдордпреВрдЖрдИ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреЗ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдирд┐рдпрдорд┐рдд cssinjs рд╕рд┐рдВрдЯреИрдХреНрд╕ рдереАрдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдПред
  • рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдПрдордпреВрдЖрдИ рдЕрднреА рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдПрдХреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдФрд░ рдЧрдЯрд░ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдЦреБрд╢реА рд╣реЛрддреА рд╣реИред
  • рд╡реИрд╕реЗ рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдорд░реНрдерди рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╡реЗрдм рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдмрд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрд╕рдПрд╕ рдХреЛ рдХреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣рд╛рдВ рдореБрджреНрджрд╛ рд╣реИ ред

рд╡рд╣ рддрд╛рд▓рд┐рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╣реА рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИ рдФрд░ рдореЗрд░реЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред FWIW, styled-components рдХрд┐рд╕реА рднреА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

import { Button } from 'material-ui'

const MyButton = styled(Button)`
  // Only these styles will be overridden
  background: red;
`

рдпрд╣ рддрдм рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдШрдЯрдХ className рдкреНрд░реЛрдк рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ DOM рдиреЛрдб рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

const MaterialUIButton = (props) => {
  /* ... */
  // As long as props.className is attached, the above usage will work
  return <button className={`bla ${props.className}`} />
}

рд╡реИрд╕реЗ рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд╕рдорд░реНрдерди рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╡реЗрдм рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рд╕рдмрд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ?

рдирд╣реАрдВ, рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬреЗрдПрд╕рдПрд╕ рдореЗрдВ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ StyleSheet.create() рддрдХ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИред CSS рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП styled-components рдХреА рдУрд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдореИрдВ рдХреБрдЫ рд╕рдордп рд╕реЗ @javivelasco рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╣ react-toolbox рдХреЗ рд╕рд╛рде рдХрд╣рд╛рдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрджреНрднреБрдд рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рд╕рднреА рддреГрддреАрдп рдкрдХреНрд╖ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕реЗ рдЕрдкрдирд╛рддреЗ рд╣реИрдВред рдЙрд╕реЗ рдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рд╡рд╣ рдпрд╣рд╛рдВ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЭрдВрдХрд╛рд░ рдХрд░ рд╕рдХреЗ!


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

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдПрдХ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдЬреЛ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛? рд╣рдордиреЗ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдЗрдирдкреБрдЯ рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдирдорд╕реНрддреЗ, рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рдЯрд░ рдореЗрдВ рдкреВрдЫрддрд╛рдЫ рдХреАред рджреВрд╕рд░реЛрдВ рдХреА рд░рд╛рдп рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдБ рднреА рдкреЛрд╕реНрдЯ рдХрд░реВрдБрдЧрд╛:

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА-ui _next_ рдПрдХ рдХрд╕реНрдЯрдо рдЬреЗрдПрд╕рдПрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рднрд╛рд░реА рдирд┐рд╡реЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдкрд░ рдЬреЗрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЧрдВрднреАрд░ рд▓рд╛рдн рдЦреЛрдЬрд╛ рд╣реИ?

рдЬрдмрдХрд┐ рдЬреЗрдПрд╕рдПрд╕ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдЬрд╛рд╡рдЯреА (рдЗрдВрдЬреЗрдХреНрдЯрд╕реНрдЯрд╛рдЗрд▓) рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреИрд╕реЗ рдХрдИ рдкреИрдЯрд░реНрди рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рд╕реАрдзрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рд╕рд╛рдл рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдЬрд╛рд╡рдЯреА, рдХрд╕реНрдЯрдо рд╕реЗрдЯрдЕрдк рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕реНрдЯрд╛рдЗрд▓-рдХреЙрдореНрдк рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдЯрд╛рдЗрд▓ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЖрдк рдРрд╕реЗ рдкреНрд░реЙрдкреНрд╕ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдПрдХ рдЕрд▓рдЧ рд╢реИрд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдХреЛрдИ рд╕реЗрдЯрдЕрдк рдирд╣реАрдВ (createJss)
рдХреЛрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдирд╣реАрдВ (рдЙрдкрд╕рд░реНрдЧ)
рдХреЛрдИ JSON рдбреАрдПрд╕рдПрд▓ рдирд╣реАрдВ

рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдзрд╛рдЧрд╛ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

@rainice jss рдореЗрдВ рдбреЗрдХреЛрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ, рдПрдХ HOC рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-jss рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реИ рдФрд░ рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕реЗ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдПрдХ рд╕рдордЭрджрд╛рд░ рдЪрд░реНрдЪрд╛ рд╣реИ IMO

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рд╛рдордЧреНрд░реА (рд▓рд┐рдмрд░ рдореЗрдВрдЯреЗрдирд░ рдирд╣реАрдВ) рдЕрддреНрдпрдзрд┐рдХ рд╕рддрд╣реА рд╣реИ рдФрд░ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬреЛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдЙрд╕рдХреЗ рдкреАрдЫреЗ рдХреЛрдб рдХреА рдПрдХ рднреА рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рдкрдврд╝реА рд╣реИред

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

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЗрддрдиреЗ рдкрд░рд┐рдкрдХреНрд╡ рд╣реИрдВ рдХрд┐ рдмрдВрдж рдереНрд░реЗрдб рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рд╣рдо рдЗрд╕реЗ рд▓реЙрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХрд╛рд╢ рд╣рдо рдЙрд╕ рдзрд╛рдЧреЗ рдХреЛ рдХрдо рдпреБрдЧреНрдорд┐рдд рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рд╛ рдкрд╛рддреЗ!
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛, рдЕрднреА рдХреЗ рд▓рд┐рдП, рдШрдЯрдХреЛрдВ рдХреЗ рдкреНрд░рд╡рд╛рд╕рди/рд╕рдордЧреНрд░ рд╕реБрдзрд╛рд░ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@mxstbr рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

рдпрд╣ рддрдм рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдШрдЯрдХ рдХреНрд▓рд╛рд╕рдирд╛рдо рдкреНрд░реЛрдк рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдбреЛрдо рдиреЛрдб рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ

рдЬрдм рдореБрдИ: рдЕрдЧрд▓рд╛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╣реАрдВ рднреА рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдиреЗ рдореБрдЭреЗ рдмрдЪрд╛ рд▓рд┐рдпрд╛ред

IE10 рдХреЗ рд▓рд┐рдП рдлреНрд▓реЗрдХреНрд╕ рд╢реИрд▓рд┐рдпрд╛рдБ jss рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ

@yhaiovyi рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ IE10 рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

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

рд╡реИрд╕реЗ рднреА рдореБрдЭреЗ рдЖрдИрдИ 10 рдХреЗ рд╕рд╛рде рд╕реАрдПрд╕рдПрд╕ рдлреНрд▓реЗрдХреНрд╕ рдореЗрдВ рдЕрдм рддрдХ рдХреЛрдИ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдордЧреНрд░реА UI рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 3 рддрд░реАрдХреЗ рд╣реИрдВ (рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдлреВрд▓ рдирд╣реАрдВ рд╣реИ)ред рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╕рд╛рд░ рд╣реИред

рдЖрдк рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ API рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://material-ui-next.com/customization/css-in-js/#styled -components-api-15-lines-

рдЖрдк рд╕реНрдЯрд╛рдЗрд▓-рдЬреЗрдПрд╕рдПрд╕ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг: https://codesandbox.io/s/32mvjyjyxq

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

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдмрд╕ рдКрдкрд░ рд╕рдВрджрд░реНрднрд┐рдд рдореБрджреНрджреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рджрд┐рд▓рдЪрд╕реНрдк

рдореБрдИ рдХрд╛ рд╕рдВрджрд░реНрдн рдФрд░ withStyles рдПрдЪрдУрд╕реА рдХреЛрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЬреЗрдПрд╕рдПрд╕ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдЬреЗрдПрд╕рдПрд╕ рдереАрдордкреНрд░реЛрд╡рд╛рдЗрдбрд░ https://codesandbox.io/s/32mvjyjyxq (рдореИрдВрдиреЗ Typography рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛) рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдмрд╛рдж рдореЗрдВ (рдкреЛрд╕реНрдЯ v1 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдпрд╣ src/styles/withStyles рдФрд░ MuiThemeProvider + JSSProvider рдбрдмрд▓ рдкрд░рдд рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдХреБрдЫ рдФрд░ рд╕рд░рд▓ рд╣реИ рдЬреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЬреЗрдПрд╕рдПрд╕ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдЬреЗрдПрд╕рдПрд╕ рдХреИрд╕реЗ рд╣реИрдВ

рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ!

рдорд╛рд░реНрдЪ 13, 2018 13:55 рдХреЛ, "рд╕рд┐рд░рд┐рд▓ рдСрдмрд░реНрдЯрд┐рди" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдХреНрдпрд╛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ рдореБрдИ рдХрд╛ рд╕рдВрджрд░реНрдн рдФрд░ рд╕реНрдЯрд╛рдЗрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдПрдЪрдУрд╕реА рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ
рдХреЛрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЬреЗрдПрд╕рдПрд╕ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдЬреЗрдПрд╕рдПрд╕ рдереАрдордкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ
https://codesandbox.io/s/32mvjyjyxq

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдмрд╛рдж рдореЗрдВ (рдкреЛрд╕реНрдЯ v1 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдпрд╣ рд╕рд░рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛
src/styles/withStyles рдФрд░ MuiThemeProvider + JSSProvider рдбрдмрд▓ рд▓реЗрдпрд░

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mui-org/material-ui/issues/6115#issuecomment-372655385 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AADOWAbwLOnRoypx9ANCZnKyalZyD0M9ks5td8HNgaJpZM4L-GwD
.

рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреА рддрд░рд╣ рдЬреЗрдПрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЕрдзрд┐рднрд╛рд░ рд╣реИ

рдЬреИрд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реИ: рд╡рд┐рдВрдХ: рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдПрдХ рд╣реА рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред https://github.com/A-gambit/CSS-IN-JS-Benchmarks/blob/master/RESULT.md

рд╕рдорд╛рдзрд╛рди | рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ | рдЗрдирд▓рд╛рдЗрди-рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ | рдорд╛рдЙрдВрдЯ рдЯрд╛рдЗрдо (рдПрдордПрд╕) | рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп (рдПрдордПрд╕)
:--- | :--- | :--- | :--- | :---
...
рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ | + | - | 182 | 146.84
рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ-рдбреАрдХрдкрд▓-рд╕реЗрд▓ | + | - | 213.53 | 152.39
...
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЬреЗрдПрд╕рдПрд╕ | + | - | 198.97 | 297.74

@mxstbr рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЬреЗрдПрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдкреВрд░реНрдг рд╕реАрдПрд╕рдПрд╕ рдкрд╛рд░реНрд╕рд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдХреАрдордд рд╣реИред рд╡рд╣ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЗрд╕рдХреА рд▓рд╛рдЧрдд рдХреЛ рдирд╣реАрдВ рдорд╛рдк рд░рд╣рд╛ рд╣реИред

рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЬреЗрдПрд╕ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдПрдХ рдкреВрд░реНрдг рд╕реАрдПрд╕рдПрд╕ рдкрд╛рд░реНрд╕рд░ рдХреА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреАрдордд рд╣реИред

рдЬрд╝рд░реВрд░, рд▓реЗрдХрд┐рди рдПрдХ рдкреВрд░реНрдг CSS рдкрд╛рд░реНрд╕рд░ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдмрдЬрд╛рдп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рд╕реАрдПрд╕рдПрд╕ рдкрд╛рд░реНрд╕рд░реНрд╕ рдХреЗ рдКрдкрд░ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реАрдПрд╕рдПрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХрдоред :рд╢рд░рдорд╛рдирд╛:

рдореИрдВ рдЖрдкрдХреЗ рдкрд╛рд░реНрд╕рд░ рдмрдирд╛рдо рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реАрдПрд╕рдПрд╕ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ, рд╕реНрдЯрд╛рдЗрд▓рд┐рд╕, рд╣рдорд╛рд░реЗ рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдВрддрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рдЖрдкрдХреЗ рдкрд╛рд░реНрд╕рд░ рдмрдирд╛рдо рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реАрдПрд╕рдПрд╕ рдмреЗрдВрдЪрдорд╛рд░реНрдХрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ, рд╕реНрдЯрд╛рдЗрд▓рд┐рд╕, рд╣рдорд╛рд░реЗ рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдВрддрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рд╣рд╛рдВ, рдпрд╣ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╣реЛрдЧрд╛, рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рдЬреИрд╕реЗ 10-20x рддреЗрдЬред

рд▓реЗрдХрд┐рди рдлрд┐рд░, рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреМрди рд╕реЗ jss рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВред

рд╕рд╛рде рд╣реА рдЯреАрдмреАрдПрдЪ. рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рд╕рднреА рдЖрдИрдПрд╕рдЯреАрдПрдл рдореЗрдВ рдЪрд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рдЬреИрд╕реЗ 10-20x рддреЗрдЬред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓реЗрдХрд┐рди 10ms (рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓рд┐рд╕ рдкреВрд░реЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ) рдмрдирд╛рдо рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреВрд░реЗ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ 1ms рдЪреАрдЬреЛрдВ рдХреА рднрд╡реНрдп рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ? рдпрд╣ рдХрд┐рд╕реА рдХрд╛ рдРрдк рдирд╣реАрдВ рдмрдирд╛рдПрдЧрд╛ рдпрд╛ рддреЛрдбрд╝реЗрдЧрд╛ рдирд╣реАрдВред

рдмрд╣рд░рд╣рд╛рд▓, рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛ рдмрдВрдж рдХрд░реЗрдВред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВред рдпрд╣ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ: http://necolas.github.io/react-native-web/benchmarks/ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдкрд╛рд░реНрд╕ рдХреЗ рдмрд╛рдж рдХреИрд╢ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИред

@mxstbr рдЬрдмрдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдЕрдм рдмрдВрдж рд╣реИ, рдереЛрдбрд╝реА рд╕реНрд╡рд╕реНрде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рд╣реИред рдХрд┐рд╕реА рднреА рд╕рдордп рд╡рд╛рдкрд╕ рдЖрдПрдВ - рдпрджрд┐ рдХреЛрдИ рдореБрджреНрджрд╛ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдк рд╣рдореЗрдВ рдЧрдЯрд░ рдЪреИрдЯ рдореЗрдВ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдорд╛рдорд▓рд╛ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдкреБрд░рд╛рдирд╛ рд╣реИред рджреЛрд╕реНрддреЛрдВ, рдХреГрдкрдпрд╛ рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдмрдВрдж рдХрд░реЗрдВред рд╣рдо рдЪрд░реНрдЪрд╛ рдХреЛ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЖрдЗрдП рд▓реЙрдХрд┐рдВрдЧ рдореБрджреНрджреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рд╣рдореЗрдВ рдмреЗрд╣рддрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдпрдерд╛рд╕рдВрднрд╡ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдлреАрдбрдмреИрдХ рдПрдХрддреНрд░ рдХрд░рддреЗ рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдореИрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд▓реЛрдЧ рдЕрднреА рднреА рд░реВрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:

Capture dтАЩe╠Бcran 2019-03-10 a╠А 10 38 56

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЪрд▓ рд░рд╣рд╛ рдбреЗрд╡рд▓рдкрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдЕрдкрдиреЗ рд░реЛрдбрдореИрдк рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред
рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ:

  1. рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ ред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП 20 KB gzipped рднреБрдЧрддрд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХрд▓ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВред рд░реИрдВрдХрд┐рдВрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░:

    1. рднрд╛рд╡рдирд╛ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИ: 10kB gzipped . рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рдХрдо рд▓реЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, рддреЛ 80% рд╕реНрдЯреЛрд░реАрдмреБрдХ рд╕реЗ рдЖрддрд╛ рд╣реИ ?

    2. рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рд╡рдЬрди рд▓рдЧрднрдЧ 16 KB gzipped . рдЙрд╕рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЖрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж 20% рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛?

    3. рдЬреЗрдПрд╕рдПрд╕ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрд╡рд░рдг рд╡рдЬрди рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 15 рдХреЗрдмреА gzippedред рдпрджрд┐ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, рддреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рд╕реЗ рд╣реЛрддрд╛ рд╣реИред

  2. рдкреНрд░рджрд░реНрд╢рди ред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рд╣рдорд╛рд░реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рди рд╣реЛрдВред рдЙрдиреНрд╣реЗрдВ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЬреЛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реИрдВрдХрд┐рдВрдЧ рджреЗрддрд╛ рд╣реИ:

    1. рднрд╛рд╡рдирд╛

    2. рдЬреЗрдПрд╕рдПрд╕

    3. рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ

  3. рдЕрдиреБрдХреВрд▓рди рдПрдкреАрдЖрдИ ред рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рддрддреНрд╡ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрднреА, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ classes API, рдПрдХ theme.overrides API рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рдпрддрд╛рддреНрдордХ рд╡рд░реНрдЧ рдирд╛рдо рд░рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
  4. рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА ред !important рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
  5. рдЖрд░рдЯреАрдПрд▓ рд╕рдорд░реНрдерди

рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ, рднрд╛рд╡рдирд╛рдУрдВ рдФрд░ рдЬреЗрдПрд╕рдПрд╕ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рд▓рд┐рдиреЗрд░рд┐рдпрд╛, рдПрд╕рдПрдПрд╕рдПрд╕, рдЖрджрд┐ред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдореБрджреНрджреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдирд┐рд░реНрдгрдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ CSS-in-JS рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  • https://github.com/mui-org/material-ui/issues/15660
  • https://github.com/cssinjs/jss/issues/1102
    рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпреЗ рджреЛ рдореБрджреНрджреЗ рджреЗрд╡ рдЕрдиреБрднрд╡ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЬреЗрдПрд╕рдПрд╕ рдХреА рдЕрд╕рдВрдЧрддрд┐ рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВред

@ рдУ-рдЕрд▓реЗрдХреНрдЬреЗрдВрдбреНрд░реЛрд╡ рдХреНрдпрд╛ рдЬреЗрдПрд╕рдПрд╕ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╣реА рд░рдгрдиреАрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣рд╛ рд╣реИ? рдореБрдЭреЗ рдЖрдкрдХреА рдмрд╛рдд рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣реА рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдлрд░реНрдХ рдкрдбрд╝рддрд╛ рд╣реИ? рдпрд╣ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдпрд╛ рд▓рд╛рдпрдХ рд╣реИ?

@oliviertassinari
рдкрд┐рдЫрд▓реЗ рд╕рдВрджреЗрд╢ рдореЗрдВ, рдореИрдВ styled-components рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рддрд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдореИрдВ styled-components рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реАрдПрд╕рдПрд╕-рдЗрди-рдЬреЗрдПрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рд╣реА рд╕рдВрддреБрд▓рди рд╣реЛрдЧрд╛:

  • рджреЗрд╡ рдЕрдиреБрднрд╡ (рдкрд░рд┐рдЪрд┐рдд рдФрд░ рд▓рдЪреАрд▓рд╛рдкрди, рдЖрдЧреЗ рдпреЛрдЧрджрд╛рди, рджреЗрд╡реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ, рдЖрджрд┐)
  • рдкреНрд░рджрд░реНрд╢рди

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

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ:

  • рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╕рдореБрджрд╛рдп рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдПрд╕рдПрд╕ рдкрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ ред
    рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛рдирд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реВ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдпреВрдЖрдИ рдХреЛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@ рдУ-рдЕрд▓реЗрдХреНрдЬреЗрдВрдбреНрд░реЛрд╡ рдареАрдХ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреА рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдСрдл-рд╡рд┐рд╖рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред V5 рдореЗрдВ, рд╣рдо рдореБрдЦреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХрд╛рд╢ рд╣рдо рдШрдЯрдХреЛрдВ рдХреЗ рдирдЧреНрди, рдЬреЗрдПрд╕рдПрд╕, рднрд╛рд╡рдирд╛, рд▓рд┐рдиреЗрд░рд┐рдпрд╛ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ) рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣реА рджреГрд╖реНрдЯрд┐ рд╣реИред рдЕрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЪреБрдиреМрддреАрдкреВрд░реНрдг рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ!

рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░

styled-components рдореЗрдВ 12.3kB рдореЗрдВ @5.0.0-beta.8 рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ рд╣реИред

рдЕрдиреБрдХреВрд▓рди рдПрдкреАрдЖрдИ

рдЕрдЧрд░ рд╡реЗ https://github.com/styled-components/styled-components/pull/2625 рдпрд╛ рддреЛ рдкреИрдХреЗрдЬ рдпрд╛ рдмрд╛рд╣рд░реА рдкреИрдХреЗрдЬ рдореЗрдВ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдореБрдИ рдХреЛ рд╕рдорд╛рдирддрд╛ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЧреИрд░-рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдПрдкреАрдЖрдИ рдХреА рдХрдореА рд╣реИ рдЬрд┐рд╕реЗ рдХрднреА-рдХрднреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ , рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдкрдХреЛ рдореБрдИ рдореЗрдВ рд╣реА рдЙрд╕ рдПрдкреАрдЖрдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЙрд╕рдХреЗ рдмрд╛рд╣рд░,

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ styled-components рд╕реЗ рд╣рдореЗрдВ рд╡реЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдорд┐рд▓рддреА рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреАред

рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдпрд╣ рдХреНрдпрд╛ рд╣реИ? рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЖрдк рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ styled-components рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд░рдЯреАрдПрд▓ рд╕рдорд░реНрдерди

рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдШрдЯрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рдХреЛрдбрд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдЗрд╕рдХреЗ styled-components рдпрд╛ рдХрд┐рд╕реА CSS-in-JS рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдкреЗрд╢рдХрд╢ рдХрд░рдиреА рд╣реИ?

рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░

рд╕реНрдкреАрдб

рдпрд╣ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдорд╛ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рдорд░реНрдерди рдФрд░ рдЕрджреНрднреБрдд рдкреНрд░рдпрд╛рд╕ рдиреЗ рдЗрд╕реЗ рдЙрд╕ рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪрд╛ рджрд┐рдпрд╛ рдЬрд╣рд╛рдВ рдпрд╣ рдЬреЗрдПрд╕рдПрд╕ рд╕реЗ рднреА рддреЗрдЬ рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдЖрдХрд╛рд░

v5 рдФрд░ рднреА рджреБрдмрд▓рд╛ рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдХрд╣рд╛ 12.3kB рд╕реЗ 16.2kB рдЬреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЙрдирдХреЗ рдкреНрд░рдпрд╛рд╕ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред

рд╕реБрдкрд░рд┐рдЪрдп

рд▓реЛрдЧ рдПрдкреАрдЖрдИ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреИрдХреЗрдЬ рдХреЗ рдмрдЬрд╛рдп рдПрдкреАрдЖрдИ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реБрдП styled-components рдХрд╣рддреЗ рд╣реИрдВ, рдЬрдм рд╣рдордиреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП styled(...) ... рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА

рдпрд╣ рдореБрдИ рдХреЗ рд▓рд┐рдП рдЙрддрдирд╛ рд╣реА рд╡рдЬрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рд╡реЗрдм рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЛрдЧ рдЗрд╕рдХреА рд╡рдЬрд╣ рд╕реЗ styled-components рдХреЛ рдЕрдкрдирд╛рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

рдореВрд▓ рд╕рдореВрд╣

рдордЬрдмреВрдд рдХреЛрд░ рдЯреАрдо, рдЖрдЬ рддрдХ 81 рдЕрдВрдХ рдФрд░ 14 рдкреАрдЖрд░ рдЦреБрд▓реЗ рд╣реИрдВ, рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдпреЗ рдЕрдЪреНрдЫреЗ рдирдВрдмрд░ рд╣реИрдВред

рд╕рд╛рде рд╣реА, @mxstbr рдЬреИрд╕реЗ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ spectrum рдореЗрдВ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИ, рдЬреЛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред

рдЗрд╕реЗ рд▓реЗ рд▓рд┐рдпрд╛

рдЦреИрд░, рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ https://www.styled-components.com/docs/tooling

рдпреВрдЖрдИ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП

рдЖрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП styled-components рдХреЛ рдЕрдкрдирд╛рдирд╛ рдмрд╣реБрдд рдмрдврд╝ рдЧрдпрд╛ рд╣реИ; рдПрдЯрд▓рд╕рд┐рдпрди, рдЧрд┐рдЯрд╣рдм, рдСрд░реНрдмрд┐рдЯ рдФрд░ рдХрдИ рдЕрдиреНрдпред

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

рдЯреАрдПрд▓; рдбреАрдЖрд░

рдореИрдВ styled-components рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдЬреЗрдПрд╕рдПрд╕ рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдореИрдВ рдЖрд▓рд╕реА рд╣реВрдВ рдФрд░ рдореИрдВ рдЙрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ style={{styles.dialogTitle}} рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рдмрд╛рдж рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ

рдФрд░ рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдЬреИрд╕реЗ рддрддреНрд╡ рдЖрд╡рд░рдг рдХреЗ рд╕рд╛рде https://material-ui.com/styles/basics/#styled -components-api

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

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдореБрджреНрджреЛрдВ рдХреЛ рдмреИрдмреЗрд▓-рдкреНрд▓рдЧрдЗрди-рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ pure: true рд╕реЗрдЯ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ https://www.styled-components.com/docs/tooling#dead-code-elimination ) рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдХреБрдЫ рдореБрджреНрджреЗ рд╢реЗрд╖ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
https://github.com/styled-components/babel-plugin-styled-components/issues/245

рджреВрд╕рд░рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ рдмрд╛рд╣рд░реА рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЗрдбрд╝-рд╣рд┐рд▓рд╛рдиреЗ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП terser/uglify рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддреЗ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

const Button = styled.button`
  font-size: ${externalHelperFunction()};
`

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

@mbrowne рдореИрдВ рдкреЗрдбрд╝-рд╣рд┐рд▓рд╛рдиреЗ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА

// components.js
import React from "react";
import styled from "styled-components/macro";

const Wrapper = styled.div`
  color: blue;
`;

export function MyComponent() {
  return <Wrapper>styled</Wrapper>;
}

MyComponent.displayName = "FancyName";

export function OtherComponent() {
  return "only";
}

// App.js
import React from 'react';
import { OtherComponent } from "./components";

/* code */

рдбрд┐рдлрд╝реЙрд▓реНрдЯ create-react-app рдХреЗ рд╕рд╛рдеред MyComponent рдкреНрд░реЛрдбрдХреНрд╢рди рдмрдВрдбрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ rollup рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИ? рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред

@ eps1lon рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХ рдкрд░ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ?

const Wrapper = styled.div`
  color: blue;
`;

Wrapper.displayName = "FancyName";

export function MyComponent() {
  return <Wrapper>styled</Wrapper>;
}

export function OtherComponent() {
  return "only";
}

@mxstbr рд╣рд╛рдБ рд╣рд╛рд▓рд╛рдВрдХрд┐ рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЛ рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбрд┐рд╕реНрдкреНрд▓реЗрдирд╛рдо рдХреЛ MyComponent рдкрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдмрдВрдбрд▓ рдореЗрдВ MyComponent рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдерд╛, рдЗрд╕рдореЗрдВ рдЕрднреА рднреА styled-components рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ MyComponent рдореЗрдВ рдХрд┐рдП рдЧрдП рдХреБрдЫ рднреА рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдкреЗрдбрд╝-рд╣рд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЛрдЪрд╛ рдерд╛ (рдмрд╕ FancyName рдХреЗ рд▓рд┐рдП рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдерд╛ред

рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрднреА рднреА styled-components рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк styled рдХреЙрд▓ рдХреЛ рд╕рд╛рдЗрдб-рдЗрдлреЗрдХреНрдЯреНрд╕ рдорд╛рдирддреЗ рд╣реИрдВ рддреЛ рднреА рдореИрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛

import React from "react";
import styled from "styled-components";

export function Wrapper() {
  // nonsense
  return styled.div``;
}

export function MyComponent() {
  return <Wrapper>styled</Wrapper>;
}

export function OtherComponent() {
  return "only";
}

{ OtherComponent } рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдЗрдб-рдЗрдлрд╝реЗрдХреНрдЯ рдореБрдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдХрд┐рди рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдЕрднреА рднреА рдмрдВрдбрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ (рдпрд╣ рдореИрдХреНрд░реЛ рдХреЗ рдмрд┐рдирд╛ рднреА рд╣реИ)ред рддреЛ рдпрд╛ рддреЛ рдпрд╣ рдХреБрдЫ рдмрдЧ рд╣реИ рдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдмрдбрд╝рд╛ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХреА

// Wrapper.js
import React from "react";
import styled from "styled-components";

export default function Wrapper() {
  // side-effect free module even if styled has side-effects
  const Component = styled.div``;
  return <Component />;
}

// components.js
// commenting this out removes styled-components from the bundle
export { default as Wrapper } from "./Wrapper";

export function OtherComponent() {
  return "only";
}

// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { OtherComponent } from "./components";
import * as serviceWorker from './serviceWorker';

ReactDOM.render(<OtherComponent />, document.getElementById('root'));

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister();

styled-components (https://github.com/eps1lon/styled-components-shake) рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред

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

рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ styled-components рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП), рдмрд▓реНрдХрд┐ рдпрд╣ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ-рдЬреЛ рдпрд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдзреНрд╡рдирд┐ рдХреА рддрд░рд╣ рдпрд╣ рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╣реИ рдирд╛?

@mxstbr рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдРрд╕реЗ рдШрдЯрдХ рд╣реИрдВ рдЬреЛ рдЕрд╕реНрдерд┐рд░ рд╣реИрдВ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп (рдореЛрдбрд▓, рдкреЙрдкрд░, рдЯреЗрдХреНрд╕реНрдЯрд╛рд░рд┐рдпрд╛рдСрдЯреЛрд╕рд╛рдЗрдЬрд╝, рдпреВрдЬрд╝рдореАрдбрд┐рдпрд╛рдХреНрд╡реЗрд░реАрдЬрд╝, рдЖрджрд┐), рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

import {┬аModal } from '@material-ui/core';

рдПрд╕рдПрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рд╣рдо +5kB gzipped рд╡реГрджреНрдзрд┐ (рдЖрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ, рди рдХрд┐ +20kB gzippedред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рдо @material-ui/unstyled рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧ рдЗрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ eps1lon рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╕реНрдерд┐рд░ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ ... рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдореЗрдВ рдХреБрдЫ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдореЛ рдмрдирд╛рдпрд╛ рд╣реИ:
https://github.com/mbrowne/CRA-error-template/tree/styled-components-tree-shaking
git clone --single-branch --branch styled-components-tree-shaking [email protected]:mbrowne/CRA-error-template.git

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреИрд╕реЗ рдХреЗрд╡рд▓ Component1 рдЯреНрд░реА-рд╣рд┐рд▓рд╛рддрд╛ рд╕рд╣реА рд╣реИред

рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рд╕рднреА рдореБрджреНрджреЗ рд╣рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ, рдФрд░ @mxstbr рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╡реНрдпрд╕реНрдд рд╣реИред рдореИрдВ рдЬрд▓реНрдж рд╣реА рдПрдХ рдкреАрдЖрд░ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдХрдо рд╕реЗ рдХрдо рд╕реНрдерд┐рд░ рдкреНрд░реЙрдкреНрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдЧрд╛ (рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрд▓рдЧ рдмреИрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдкреАрдУрд╕реА рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛)ред

рдореИрдВрдиреЗ рдЯреНрд░реА-рд╣рд┐рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрдмреЗрд▓-рдкреНрд▓рдЧрдЗрди-рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдореЗрдВ рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рд╛ред рдЕрдЧрд░ рдпрд╣рд╛рдВ рдХреЛрдИ рднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @mxstbr рдЗрд╕рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░реЗрдЧрд╛ (рдФрд░ рдореИрдВ рднреА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ):
https://github.com/styled-components/babel-plugin-styled-components/pull/248

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рддрдХ рд╣рдо рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ (рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╣рдо рдРрд╕рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред рд╣рдореЗрдВ рдпрд╛ рддреЛ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЗрдПрд╕рдПрд╕ рд╕реЗ рдереАрдо рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЬреЗрдПрд╕рдПрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рд╕реЗ рдереАрдо рдХреЛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓рдХреНрд╖реНрдп рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдкреНрд░рддрд┐ рдШрдЯрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХреЗрдВред

рдпрд╣ рд╢рд╛рдпрдж рджреВрд╕рд░реА рд╢рд╛рдЦрд╛ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдмрдХрд┐ рд╣рдо рдорд╛рд╕реНрдЯрд░ рдкрд░ рд╕рдм рдХреБрдЫ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рд╢рд╛рдпрдж рдЗрд╕реЗ рдПрдХ рдмрджрд▓рд╛рд╡ (v5 рдореЗрдВ) рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд╣реАрдВ рддреЛ рдпрд╣ рдмрд╛рдд рдФрд░ рдЙрд▓рдЭ рдЬрд╛рддреА рд╣реИред

рдЯрд┐рдкреНрдкрдгреА рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣реЗ рджреЛрд╕реНрддреЛрдВ, рдореИрдВ рднреА рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдБ... рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд╕рдордЭрджрд╛рд░реА рдХреА рдмрд╛рдд рд▓рдЧрддреА рд╣реИ... рдЪрд▓реЛ рдпрд╣ рдХрд░рддреЗ рд╣реИрдВ...!

@ рдордХрд░-рдЫрд╣ рдКрд░реНрдЬрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд▓реЗрдХрд┐рди рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдПрдХ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХ рд╕рдВрд╕реНрдХрд░рдг рдЙрддреНрддрд░реЛрддреНрддрд░ (+ рдЬреЗрдПрд╕рдПрд╕ рдФрд░ рднрд╛рд╡рдирд╛) (v4 рдХреЗ рджреМрд░рд╛рди рдЕрд╕реНрдерд┐рд░) рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЕрд╕реНрдерд┐рд░ рдХрд╣рд╛рдиреА рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреАрдУрд╕реА рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдЬрдорд╛ рдХрд░рдирд╛ рд╣реИред рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ (v5 рдмреАрдЯрд╛) + рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреНрд░реЙрдкреНрд╕ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ JSS рдФрд░ рд╕реНрдЯреИрдЯрд┐рдХ рд╕реНрдЯрд╛рдЗрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдзреАрдорд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@oliviertassinari рдХреНрдпрд╛ рдХрд╣реАрдВ рд╣рдо рдЗрд╕рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдореЗрдВ рдХреВрджрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░рдХреНрд╖рдХ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛

рдЖрдк рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдкрд░ рднрд╛рд╡рдирд╛ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреЗрддреЗ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ "[рднрд╛рд╡рдирд╛] рдХреБрдЫ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдбрд╛рдЙрдирд▓реЛрдб рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ 80% рд╕реНрдЯреЛрд░реАрдмреБрдХ рд╕реЗ рдЖрддрд╛ рд╣реИ?", рд▓реЗрдХрд┐рди рдпрд╣ рдЧрд▓рдд рд╣реИред рдпрд╣ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ ( рддреБрд▓рдирд╛ ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ 80% рдбрд╛рдЙрдирд▓реЛрдб рд╕реНрдЯреЛрд░реАрдмреБрдХ рд╕реЗ рдХреНрдпреЛрдВ рдЖрддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдпрд╣ рд╕рд╡рд╛рд▓ рдЗрд╕рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ (рдХрдИ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрдВрдЧ рдЖ рдЧрдпрд╛ рдерд╛ рдФрд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛, рдФрд░ рдореИрдВрдиреЗ рднрд╛рд╡рдирд╛ рдХреА рдЦреЛрдЬ рдХреАред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдлрд╛рдпрджреЗ рдкрд╛рдПред

рдпрд╣ рд╣рд▓реНрдХрд╛, рддреЗрдЬ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХрддрд╛рдПрдВ рд╣реИрдВ: рд╕рдВрдкрддреНрддрд┐ рдЕрдЧреНрд░реЗрд╖рдг, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ (рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд), Next.js SSR рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ (_app рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ред js рдФрд░ _document.js рдлрд╝рд╛рдЗрд▓реЗрдВ, рдкрд╣рд▓реА рдмрд╛рд░ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдореБрдЭреЗ рдПрдХ рдШрдВрдЯрд╛ рдХреНрдпрд╛ рд▓рдЧрд╛)

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

@lcswillems рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

  • "рд╣рд▓реНрдХрд╛": рд╕рдЯреАрдХ рдирд╣реАрдВ: https://bundlephobia.com/[email protected] (12.2 kB) рдмрдирд╛рдо https://bundlephobia.com/result?p=@emotion/ рд╕реНрдЯрд╛рдЗрд▓ + https://bundlephobia.com/result?p=@emotion/core + https://bundlephobia.com/result?p=emotion-theming (рд╕рд╛рдЭрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛ 13.1 kB)
  • "рдиреЗрдХреНрд╕реНрдЯ.рдЬреЗрдПрд╕ рдПрд╕рдПрд╕рдЖрд░ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕": рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ

рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдФрд░ рдореБрдЭреЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

  • "рд╣рд▓реНрдХрд╛": рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ
  • "рдиреЗрдХреНрд╕реНрдЯ.рдЬреЗрдПрд╕ рдПрд╕рдПрд╕рдЖрд░ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕": рдЕрдм рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдПрд╕рдПрд╕рдЖрд░ рдХреЛ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рдХреНрдпреЛрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдЙрдирдХрд╛ рддрд░реАрдХрд╛ рдЕрдЪреНрдЫрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред
  • "рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ": рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╕реНрд░реЛрдд рднреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • "рддреЗрдЬрд╝": рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдкреБрд░рд╛рдиреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рджреЗрдЦреЗ, рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдирд╣реАрдВ рд╣реИред

рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдкреНрд░реЛрдк рдлрд╝реЙрд░рд╡рд░реНрдбрд┐рдВрдЧ/рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╣реИ: https://github.com/styled-components/styled-components/issues/439 ред рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рдмрд╣реБрдд рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣рд░ рдмрд╛рд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдореЗрдВ рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рднрд╛рд╡рдирд╛ рдХрдо рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд▓рдЧрддреА рд╣реИред

"рд╣рд▓реНрдХрд╛": рд╕рдЯреАрдХ рдирд╣реАрдВ: https://bundlephobia.com/[email protected] (12.2 kB) рдмрдирд╛рдо https://bundlephobia.com/result?p=@emotion/ рд╕реНрдЯрд╛рдЗрд▓ + https://bundlephobia.com/result?p=@emotion/core + https://bundlephobia.com/result?p=emotion-theming (рдмрд┐рдирд╛ рд▓рд┐рдП 13.1 kB

рднрд╛рд╡рдирд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк @emotion/styled рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ css рдкреНрд░реЙрдкреНрд╕ + @jsx pragma рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдкрдХреЛ emotion-theming рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, ThemeContext рдкрд╣рд▓реЗ рд╕реЗ рд╣реА @emotion/core рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред рддреЛ рдпрд╣ 12.2KB рдмрдирд╛рдо 6.5KB рд╣реИред

рдЗрдирд▓рд╛рдЗрди

рдмрд╕ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ: рдЧреИрд░-MUI рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП @material-ui/styles рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрди рдЕрджреНрдпрддрдиреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ? рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдПрдХ рдмрдбрд╝реЗ рдЖрдВрддрд░рд┐рдХ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрд╕реЗ styled-components рд╕реЗ рдЕрдзрд┐рдХ рдЪреБрдирд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢ рд╣реИрдВред

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЕрдЧрд░ @material-ui/styles рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╣рд┐рд╖реНрдХрд░рдг рдХреА рдпреЛрдЬрдирд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛, рддрд╛рдХрд┐ рдореИрдВ рддрджрдиреБрд╕рд╛рд░ рдпреЛрдЬрдирд╛ рдмрдирд╛ рд╕рдХреВрдВред

рд╡реИрд╕реЗ рднреА, рдЙрди рд╕рднреА рдмреЗрд╣рддрд░реАрди рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд░рд╣реЗ рд╣реИрдВ!

@ рдирд┐рдХрдЬреЙрдирд╕рди-рджреЗрд╡ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЬреЗрдПрд╕рдПрд╕ рдореЗрдВ рдкреНрд░рд╡рд╛рд╕ рд╕реАрдзрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд╕рдВрдЧрдарди рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛?

@oliviertassinari рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдЧрд╛ред рдЬрдм рддрдХ рд╣рдо рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЛ рдЕрдзрд┐рдХрддрд░ рд╕рдорд╛рди рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ ( classes рдкреНрд░реЛрдк рдЖрдзрд╛рд░рд┐рдд рд╕реНрдерд╛рдиреАрдп рдУрд╡рд░рд░рд╛рдЗрдб, рдереАрдо рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдУрд╡рд░рд░рд╛рдЗрдб рд╕рдВрднрд╡ рд╣реИ), рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдПрдордпреВрдЖрдИ рдХреЗ рдФрд░ рдЕрдзрд┐рдХ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж @material-ui/styles рд╕реЗ рджреВрд╕рд░реЗ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИ? рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдореБрдЭреЗ react-jss рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдХрдореА рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣реА рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо @material-ui/styles рдореЗрдВ рд▓рд╛рдн рдЙрдард╛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдПрдордпреВрдЖрдИ рдкреИрдХреЗрдЬ рдХрд░ рд░рд╣рд╛ рд╣реИ рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗред

@ рдирд┐рдХрдЬреЙрдирд╕рди-рджреЗрд╡ рд╣рдо рдЕрдкрдиреА рддрд░рдл рд╕реЗ рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред

рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреВрдВ рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп ComponentA рд╣реИред рд╣рдо ComponentB ComponentA рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

const ComponentA = ({className}) => (
  <div className={className}>
    <div className='inner' />
  </div>
);

const ComponentB = ({ className, classNameInner }) => (
  <div className={className}>
    <div className='inner'>
      <ComponentA className={classNameInner} />
    </div>
  </div>
)

const StyledComponentB = styled(ComponentB)`
     ???
`;

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреИрд╕реЗ рджреЛрдиреЛрдВ ComponentA рдФрд░ ComponentB рдореЗрдВ рд╕рдорд╛рди className='inner' рд╡рд╛рд▓реЗ рддрддреНрд╡ рд╣реИрдВред рд╣рдо .inner рддрддреНрд╡ рдХреЛ рдХреЗрд╡рд▓ ComponentB рдкрд░ рдХреИрд╕реЗ рд▓рдХреНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ?

рдирдорд╕реНрддреЗ @oliviertassinari , рд╕рд╛рдордЧреНрд░реА UI рдХреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдХреЗ рдкреАрдЫреЗ рдХреА рд╕рд╛рд░реА рд╕реЛрдЪ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдФрд░ рдордЯреЗрд░рд┐рдпрд▓ рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рднреА рдзрдиреНрдпрд╡рд╛рджред рдЕрднреА рдореИрдВ рдЗрд╕рдХреЗ рдКрдкрд░ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдБред

styled-components рдЕрдкрдирд╛рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдирд╛ рд╣реБрдЖ рдирд┐рд░реНрдгрдп рд╣реИ, рдФрд░ рдЙрд╕ рд▓рдХреНрд╖реНрдп рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдХрд╛рдо рд╢реБрд░реВ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ @croraf рдФрд░ @lcswillems . рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВ

classes рд╕рдВрдкрддреНрддрд┐ рд╡рд░реНрддрдорд╛рди рд╕рд╛рдордЧреНрд░реА UI рд╕реНрдЯрд╛рдЗрд▓ рд╕реЗ рдХреБрдЫ рдмрдврд╝рд┐рдпрд╛ рд╣реИред

рдпрд╣ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рд╢реИрд▓реА рдЕрдиреБрдХреВрд▓рди рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ classes рдХреА рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдореБрдЭреЗ рдХреБрдЫ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдореИрдВ & .Component-root рдЬреИрд╕реЗ рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХреБрдЫ рднреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ Component рдЙрд╕ рд╕реАрдПрд╕рдПрд╕ рд╡рд░реНрдЧ рдХреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛ред рдХрдо рд╕реЗ рдХрдо <Component classes={{root: ....}} /> рд╣реЛрдиреЗ рд╕реЗ рдореБрдЭреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рддреНрд░реБрдЯрд┐ (рдпрджрд┐ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рд╣реИ) рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

рдПрдХ рдШрдЯрдХ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ (рдФрд░ рд╕рдорд░реНрдерд┐рдд) рд╣реИрдВ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЫреЛрдбрд╝ рджреЗрдВред

рдореИрдВрдиреЗ рд▓рдЧрднрдЧ 2 рд╡рд░реНрд╖реЛрдВ рддрдХ style-components рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ рд╣реИред рд▓реЗрдХрд┐рди, рдПрдордпреВрдЖрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ @croad рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ: рд╡рдВрд╢рдЬ рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ & .inner рдмрд╣реБрдд рдирд╛рдЬреБрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЙрдк-рдШрдЯрдХреЛрдВ рдореЗрдВ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдореЗрд░реЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╣ рдХреЛрдИ рдХреЛрдирд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ... рдореЗрд░реЗ рд╕рд╛рде рдРрд╕рд╛ рдХрдИ рдмрд╛рд░ рд╣реБрдЖ рд╣реИ)ред рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:

  • &.inner рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╣рд░ рдЬрдЧрд╣ ${props.className}.inner рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрдИ рдмрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд▓рд┐рдЦрдирд╛ рджрд░реНрджрдирд╛рдХ рд╣реИред
  • > .inner рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдШрдЯрдХ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдмреАрдЪ рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд div рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдпрд╣ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕рдПрд╕ рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдордпреВрдЖрдИ рдХреЗ рдХрд╛рд░рдг рд╕реАрдЦрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди styled-components рдХреЗ рд╕рд╛рде рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдордпреВрдЖрдИ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рддрд╛рдЬрд╝рд╛ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд▓рдЧрд╛ (рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж рд╕реНрдЯрд╛рдЗрд▓ рдПрдЪрдУрд╕реА рд╣рд░ рдЬрдЧрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрдирд╕реЗ рдирдлрд░рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реВрдВ рдПрдЪрдУрд╕реА... рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдореЗрд░рд╛ рдирд┐рдЬреА рдЕрдиреБрднрд╡ рд╣реИ)ред рднрд╛рд╡рдирд╛ рдХрдореЛрдмреЗрд╢ рд╡рд░реНрддрдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдФрд░ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ JSS рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдореБрджреНрджреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдбрд┐рдЬрд╛рдЗрди рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЗрдореЛрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЖрдкрдХреЛ styled-components рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрддрдирд╛ рдЖрд╢реНрд╡рд╕реНрдд рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ classes рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реИрд▓реА рдЕрдиреБрдХреВрд▓рди рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХреЗ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдПрдордпреВрдЖрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреА рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред

рдХреНрд▓рд╛рд╕ рдкреНрд░реЛрдк рдХреЗ рд╕рд╛рде styled-components рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ? рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ?

JSS рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдХреНрдпрд╛ рджреВрд░ рдЬрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдордЬрдмреВрдд рдХрд╛рд░рдг рд╣реИ?

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

@powerfulj рдЖрдк рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдкрд░ рдЬреЗрдПрд╕рдПрд╕ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ? рдореБрдЭреЗ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдЪреБрдирдирд╛ рдерд╛ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдореЗрд░реЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд▓рдЧреЗред

@lcswillems
рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдирдпрд╛ рдШрдЯрдХ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдк рдХреЗрд╡рд▓ рдЧреБрдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдирдП рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдЖрдк рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ JSS рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓реА рд╕реЗ рдЬреЗрдПрд╕рдПрд╕ рд╢реИрд▓реА рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдирд╛ рднреА рддреЗрдЬрд╝ рд╣реИ, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдмрдбрд╝рд╛ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЗрд╕реЗ рдЬреЗрдПрд╕рдПрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ CSS рд╣реИ (рдЬреИрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ devtools рд╕реЗ) рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ JSS рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдпрд╣ рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред

рдмрд╕ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рдЦреЛрдЬ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдореИрдВрдиреЗ рдХреБрдЫ рдбреЗрдореЛ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ # 16947 рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде рд╣реИред makeStyles рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдереАрдо рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред makeStyles рд░реИрдкрд░ рд╣реИ рдЬреЛ defaultTheme рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдлрд┐рд░ useStyles рд╣реБрдХ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ ThemeProvider рдереАрдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ defaultTheme рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдореЗрдВ рдРрд╕реА рдХреЛрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред ThemeProvider рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ defaultTheme рдХреЛ рдХреЗрд╡рд▓ .attrs рд╡рд┐рдзрд┐ рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо makeStyles рд░реИрдкрд░ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ

import styledWithoutDefault from 'styled-components';
import defaultTheme from './defaultTheme';

const styled = Component => {
  return styledWithoutDefault(Component).attrs({ theme: defaultTheme });
};

export default styled;

рд▓реЗрдХрд┐рди .attrs рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ ThemeProvider рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдереАрдо рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗрдЧреА рдпрджрд┐ рдХреЛрдИ рд╣реЛред рдФрд░ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ makeStyles рдЬреЗрдПрд╕рдПрд╕-рдкреНрд▓рдЧрдЗрди-рдбрд┐рдлреЙрд▓реНрдЯ-рдпреВрдирд┐рдЯ рдкреНрд░реАрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ px рдХреЛ spacing() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдЕрдВрддрд┐рдо рдореБрджреНрджреЗ рдХрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╕реНрдЯрд╛рдЗрд▓-рдЬреЗрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рди рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ред

рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░/рд╕реБрдЭрд╛рд╡ рдпрд╣рд╛рдВ рдкрд╛рдХрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред

@ fyodore82 .attrs рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ https://www.styled-components.com/docs/api#attrs), рддреЛ рдпрд╣ рдХрд░реЗрдЧрд╛:

```рдЬреЗрдПрд╕
.attrs(({рдереАрдо = рдбрд┐рдлреЙрд▓реНрдЯрдереАрдо, ...рдкреНрд░реЛрдкреНрд╕}) => ({...рдкреНрд░реЛрдкреНрд╕, рдереАрдо}))
````

@рдХреНрд░реЛрд░рд╛рдл

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЪреАрдЬ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реИ: css рдкреНрд░реЛрдк ред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдШрдЯрдХ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓реА рд╕реЗ рдЬреЗрдПрд╕рдПрд╕ рд╢реИрд▓реА рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдирд╛ рднреА рддреЗрдЬрд╝ рд╣реИ, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдмрдбрд╝рд╛ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЗрд╕реЗ рдЬреЗрдПрд╕рдПрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

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

рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ CSS рд╣реИ (рдЬреИрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ devtools рд╕реЗ) рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ JSS рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдпрд╣ рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред рдпрд╣реА рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдСрдирд▓рд╛рдЗрди рд▓рд┐рдЦреЗ рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ CSS CSS рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, JSS рдореЗрдВ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк StackOverflow рд╕реЗ рдХреБрдЫ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкрд╣рд▓реЗ JSS рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдмрд╣реБрдд рджрд░реНрджрдирд╛рдХ рд╣реИред

рдЕрдиреНрдп рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:

  • рдЬреЗрдПрд╕рдПрд╕ рд▓рд┐рдЦрдирд╛ рдЕрдзрд┐рдХ рджрд░реНрджрдирд╛рдХ рд╣реИ: рдЖрдкрдХреЛ рдЙрджреНрдзрд░рдг рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрдЯрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдореБрдЭреЗ рдПрдХ рдирд╣реАрдВ рдорд┐рд▓рд╛)ред
  • рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдордЭрдирд╛ рдХрдард┐рди рд╣реИред рд╣рд░ рдХреЛрдИ рд╕реАрдПрд╕рдПрд╕ рдЬрд╛рдирддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╣рд░ рдХреЛрдИ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЛрдб рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ (рдЬреЗрдПрд╕рдПрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЖрдорддреМрд░ рдкрд░ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЫрджреНрдо рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдФрд░ рдореАрдбрд┐рдпрд╛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП)ред
  • рдХреЛрдб рдмрд╣реБрдд рдХрдо рдкрдардиреАрдп рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдб рдШрдЯрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдпрд╣ рдЙрдирдХреЗ рд╕рд╛рде рдХрд┐рддрдирд╛ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЬреЗрдПрд╕рдПрд╕ рд╕рдВрд╕реНрдХрд░рдг:

import React from 'react';
import { makeStyles, useTheme } from '@material-ui/core/styles';
import Card from '@material-ui/core/Card';
import CardContent from '@material-ui/core/CardContent';
import CardMedia from '@material-ui/core/CardMedia';
import IconButton from '@material-ui/core/IconButton';
import Typography from '@material-ui/core/Typography';
import SkipPreviousIcon from '@material-ui/icons/SkipPrevious';
import PlayArrowIcon from '@material-ui/icons/PlayArrow';
import SkipNextIcon from '@material-ui/icons/SkipNext';

const useStyles = makeStyles(theme => ({
  card: {
    display: 'flex',
  },
  details: {
    display: 'flex',
    flexDirection: 'column',
  },
  content: {
    flex: '1 0 auto',
  },
  cover: {
    width: 151,
  },
  controls: {
    display: 'flex',
    alignItems: 'center',
    paddingLeft: theme.spacing(1),
    paddingBottom: theme.spacing(1),
  },
  playIcon: {
    height: 38,
    width: 38,
  },
}));

export default function MediaControlCard() {
  const classes = useStyles();
  const theme = useTheme();

  return (
    <Card className={classes.card}>
      <div className={classes.details}>
        <CardContent className={classes.content}>
          <Typography component="h5" variant="h5">
            Live From Space
          </Typography>
          <Typography variant="subtitle1" color="textSecondary">
            Mac Miller
          </Typography>
        </CardContent>
        <div className={classes.controls}>
          <IconButton aria-label="previous">
            {theme.direction === 'rtl' ? <SkipNextIcon /> : <SkipPreviousIcon />}
          </IconButton>
          <IconButton aria-label="play/pause">
            <PlayArrowIcon className={classes.playIcon} />
          </IconButton>
          <IconButton aria-label="next">
            {theme.direction === 'rtl' ? <SkipPreviousIcon /> : <SkipNextIcon />}
          </IconButton>
        </div>
      </div>
      <CardMedia
        className={classes.cover}
        image="/static/images/cards/live-from-space.jpg"
        title="Live from space album cover"
      />
    </Card>
  );
}

рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рд╕рдВрд╕реНрдХрд░рдг:

import React from 'react';
import styled from 'styled-components';
import { useTheme } from '@material-ui/core';
import MuiCard from '@material-ui/core/Card';
import MuiCardContent from '@material-ui/core/CardContent';
import MuiCardMedia from '@material-ui/core/CardMedia';
import IconButton from '@material-ui/core/IconButton';
import Typography from '@material-ui/core/Typography';
import SkipPreviousIcon from '@material-ui/icons/SkipPrevious';
import MuiPlayArrowIcon from '@material-ui/icons/PlayArrow';
import SkipNextIcon from '@material-ui/icons/SkipNext';

export default function MediaControlCard() {
  const theme = useTheme();

  return (
    <Card>
      <Details>
        <CardContent>
          <Typography component="h5" variant="h5">
            Live From Space
          </Typography>
          <Typography variant="subtitle1" color="textSecondary">
            Mac Miller
          </Typography>
        </CardContent>
        <Controls>
          <IconButton aria-label="previous">
            {theme.direction === 'rtl' ? <SkipNextIcon /> : <SkipPreviousIcon />}
          </IconButton>
          <IconButton aria-label="play/pause">
            <PlayArrowIcon />
          </IconButton>
          <IconButton aria-label="next">
            {theme.direction === 'rtl' ? <SkipPreviousIcon /> : <SkipNextIcon />}
          </IconButton>
        </Controls>
      </Details>
      <CardMedia
        image="/static/images/cards/live-from-space.jpg"
        title="Live from space album cover"
      />
    </Card>
  );
}

const Card = styled(MuiCard)`
  display: flex;
`

const Details = styled.div`
  display: flex;
  flex-direction: column;
`

const CardContent = styled(MuiCardContent)`
  flex: 1 0 auto;
`

const CardMedia = styled(MuiCardMedia)`
  width: 151px;
`

const Controls = styled.div`
  display: flex;
  align-items: center;
  padding-left: ${props => props.theme.spacing(1)}px;
  padding-bottom: ${props => props.theme.spacing(1)}px;
`

const PlayArrowIcon = styled(MuiPlayArrowIcon)`
  height: 38px;
  width: 38px;
`

рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдЬреЗрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред

css рд╕рдВрдкрддреНрддрд┐ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИ, рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИред (рдХреЙрдкреАрдХреИрдЯ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдмрдирд╛рддреЗ рд╣реИрдВ: рдбреА)

рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред

@lcswillems

рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░рдирд╛, рдмрд╕ рдЕрдкрдиреЗ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЙрдард╛рдирд╛:

рдпрджрд┐ рдЖрдк StackOverflow рд╕реЗ рдХреБрдЫ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкрд╣рд▓реЗ JSS рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдмрд╣реБрдд рджрд░реНрджрдирд╛рдХ рд╣реИ

CSS рдХреЛ CSS-in-JS рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ VSCode рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рднрд▓реЗ рд╣реА, рдореИрдВ рдЗрд╕реЗ рджрд░реНрджрдирд╛рдХ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ред

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

рдореИрдВ рдЗрд╕ рддрд░реНрдХ рдХреЛ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ JS рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдВрдкрд╛рджрдХ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

image

(рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЖрдк рдХреБрдЫ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ?)

рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдЬрдмрдХрд┐ рдХреНрд▓рд╛рд╕рдирд╛рдо рдкреНрд░реЙрдкреНрд╕ рдХреА рдХрдореА рдпрдХреАрдирди рдХреНрд▓реАрдирд░ рд╣реИ, рдпрд╣ рдореБрдЦреНрдп JSX рдХреЛрдб рдмреНрд▓реЙрдХ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдШрдЯрдХ MUI рдореВрд▓ рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ styled() рдШрдЯрдХреЛрдВ рдХреЛ рдХреНрд░реЙрд╕-рд░реЗрдлрд░реЗрдВрд╕ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдмрдбрд╝реЗ рдШрдЯрдХ рдореЗрдВ рдЗрдиреНрд╣реЗрдВ рджреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

styled() рдЗрдирд╡реЛрдХреЗрд╢рди (рдореЗрд░реЗ рд▓рд┐рдП) JSS рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдкрдардиреАрдп рд╣реИрдВ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореЗрд░реА рдЫрд╡рд┐ рдЖрдкрдХреЛ рдЙрдирдХреА рдЖрджрдд рд╣реИ)ред

@powerfulj рдЖрдк рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдкрд░ рдЬреЗрдПрд╕рдПрд╕ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ? рдореБрдЭреЗ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдЪреБрдирдирд╛ рдерд╛ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдореЗрд░реЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд▓рдЧреЗред

рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЦреБрдж рдПрдХ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ рдФрд░ рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрдирд╛рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╕реЗ рдирдлрд░рдд рд╣реИред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХрд╛ рджрд╛рд╡рд╛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрддреАрдд рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИред рдпрд╣ рдореБрдЭреЗ рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ "рд╣рдо рдПрдХ рдРрд╕рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЪреБрдирддреЗ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВ рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯ рд▓рд╛рдн рдХреЗ?"ред

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

{
...рд╕рд╛рдЭрд╛JSS1,
...рд╕рд╛рдЭрд╛JSS2,
рдЬреЛ рднреА рд╣реЛ
}

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рд░реНрдмрд╛рдз рдЧрддрд┐рд╢реАрд▓ рдереАрдо рд╣реИрдВ рдЬреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдХреНрд▓рд╛рд╕рдирд╛рдо рдФрд░ рд╕реАрдПрд╕рдПрд╕ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдХреЗрдд рдорд┐рд▓реЗ рд╣реИрдВред

рдирдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗрд╡рд▓ JSS рдХреЛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

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

const Wrapper = styled.div`
  display: block;

  .inner {
    flex: 1;
  }
`

...
  <Wrapper>
    <div class="inner">...</div>
  </Wrapper>

рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП https://www.styled-components.com/docs/faqs#can -i-nest-rules рджреЗрдЦреЗрдВред

рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓реА рд╡рд░реАрдпрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рд░рд╣ рд╕рдХрддреА рд╣реИред

рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП styled-components рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЬреЗрдПрд╕рдПрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдзрд┐рдХ рдкрд╕рдВрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐:

  • рдЬрдм рд╢реИрд▓рд┐рдпрд╛рдБ рд▓рдВрдмреА рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ рддреЛ рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реВрдБред
    рдореИрдВрдиреЗ рдЗрд╕реЗ styled-components рдХреЗ рд╕рд╛рде рднреА рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ useStyles / makeStyles рд▓рд┐рдЦрдирд╛, рдкрдврд╝рдирд╛ рдФрд░ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИред рдЙрджрд╛. import useStyles from './MyComp.styles' рдмрдирд╛рдо import {XStyled, YStyled,...} from './MyComp.styles' ... TS рдореЗрдВ рдЕрдкрдиреА рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЙрди ...Styled рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред
  • рдореИрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ: рдкрд╣рд▓реЗ рдореИрдВ рдбрд┐рд╡ рдФрд░ рдХреНрд▓рд╛рд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдбреНрд░рд╛рдлреНрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдШрдЯрдХреЛрдВ рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░рддрд╛ рд╣реВрдВред styled-components рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЖрдВрддрд░рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ (рдЬреИрд╕реЗ @mbrowne рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЙрд╕ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП useStyles рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдкрд╛рдпрд╛ред
  • рд╕реАрдПрд╕рдПрд╕ рдХреЛрдб рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдХреНрд╖рд░ рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрдкрдХреЛ рдереАрдо/рдкреНрд░реЛрдк рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рддреЛ рднрдпрд╛рдирдХ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдкреЗрд╕реНрдЯ рдХреЛрдб рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдВрджрд░ рдЪрд░ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдкрд╛рджрди рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдЗрддрдирд╛ рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдпреЗ рдореЗрд░реА рдирд┐рдЬреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рд╣реИрдВ, рдЖрдкрдХреА рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдореЗрд░рд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЦреБрд▓рд╛ рдкреНрд░рд╢реНрди рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ classes рдЙрдкрдпреЛрдЧред

className рдФрд░ рдЖрдВрддрд░рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ (рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ)ред css рдореЗрдВ styled-components $ рдкреНрд░реЛрдк рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рднрд╛рд╡рдирд╛ рдореЗрдВ css рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рдкрд░реАрдд, css рдкреНрд░реЛрдк рдПрдХ рдШрдЯрдХ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ useStyle/makeStyles/classes рдХреЛрдб рд╢реИрд▓реА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

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

рдПрдордпреВрдЖрдИ рдкрд░ рд╡рд╛рдкрд╕, рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рддрд╣рдд рд╣реВрдВ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХрд╛ рдорддрд▓рдм рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ className рдФрд░ рдЖрдВрддрд░рд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдкреВрд░реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ: рдЖрдк styled рдпрд╛ css рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдШрдЯрдХ className рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдЕрдЪреНрдЫреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП classes рдкреНрд░реЛрдк рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣реИред рд╡рд╣ рдкреНрд░реЛрдк рдЪреЗрдХ рд╕реНрдЯрд╛рдЗрд▓ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдПрдХ рдордзреНрдпрдо рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬреИрд╕реЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд▓реЗрдХрд┐рди classes рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд░рдЦрдирд╛ (рдЖрдВрддрд░рд┐рдХ рд╡рд░реНрдЧ рд╣реИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛)ред рдореБрдЭреЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдПрдкреАрдЖрдИ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреЛ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЬреЗрдПрд╕рдПрд╕ рдХреА рддрдХрдиреАрдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдореБрдЦреНрдп рдореБрджреНрджрд╛ рд╣реИ, рддреЛ рднрд╛рд╡рдирд╛ рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рд░рд╣реА рд╣реИ (рджреЗрдЦреЗрдВ https://2019.stateofcss.com/technologies/css-in-js/#tools-section-overview), рдФрд░ рдпрд╣ рдПрдХ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ makeStyles рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред

@ dfernandez-asapp рдЖрдкрдиреЗ рдЗрд╕ fwiw рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реБрдП рдХреБрдЫ рдЙрддреНрдХреГрд╖реНрдЯ рдмрд┐рдВрджреБ рдмрдирд╛рдП рд╣реИрдВ @ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп jss рдХреЗ рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ https://www.styled-components.com/docs/advanced# рд╕реНрдЯрд╛рдЗрд▓ -рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕

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

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

const Wrapper = styled.div`
  display: block;

  .inner {
    flex: 1;
  }
`

...
  <Wrapper>
    <div class="inner">...</div>
  </Wrapper>

рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП https://www.styled-components.com/docs/faqs#can -i-nest-rules рджреЗрдЦреЗрдВред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди? рдпрд╛ рд╣рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рддрд╛рд░ рд▓рдЧрд╛рдирд╛ рд╣реИ?

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

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдиреАрдЪреЗ рджрдХреНрд╖рд┐рдг-рдкрд╛рд╡ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдЦреЗрдВред

@martinjlowm рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИ?

image

рджреЗрдЦреЗрдВ: https://styled-components.com/docs/advanced#style -objects

рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдкреНрд░рдЪрд╛рд░ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣ рд╕рд╛рд░реА рдирдлрд░рдд рднреА рдирд╣реАрдВ рдорд┐рд▓рддреА рдЬреЛ рдЗрд╕реЗ рдорд┐рд▓рддреА рд╣реИред тАН

рд╕реАрдПрд╕рдПрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрдИрдПрдордУ рдкрд░ рднрд╛рд╡рдирд╛ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рд╡реНрдпрд╛рдкрдХ рд╕реБрдзрд╛рд░ рд╣реИрдВ

@martinjlowm рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИ?

...

рджреЗрдЦреЗрдВ: https://styled-components.com/docs/advanced#style -objects

рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдкреНрд░рдЪрд╛рд░ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣ рд╕рд╛рд░реА рдирдлрд░рдд рднреА рдирд╣реАрдВ рдорд┐рд▓рддреА рдЬреЛ рдЗрд╕реЗ рдорд┐рд▓рддреА рд╣реИред тАН

рд╕реАрдПрд╕рдПрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрдИрдПрдордУ рдкрд░ рднрд╛рд╡рдирд╛ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рд╡реНрдпрд╛рдкрдХ рд╕реБрдзрд╛рд░ рд╣реИрдВ

рд╕рдордЭрд╛! рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдореЗрд░реА рдЪрд┐рдВрддрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереА - рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ!

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЬреЗрдПрд╕рдПрд╕ рдпрд╛ рддреЛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ - рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╕рд░реНрд╡рд░ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдЪрд╛рджрд░реЗрдВ рдПрдХ рд╣рддреНрдпрд╛рд░рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдЧреА - рдХреНрдпрд╛ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ?

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

@martinjlowm рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╣реИ?
...
рджреЗрдЦреЗрдВ: https://styled-components.com/docs/advanced#style -objects
рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдкреНрд░рдЪрд╛рд░ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣ рд╕рд╛рд░реА рдирдлрд░рдд рднреА рдирд╣реАрдВ рдорд┐рд▓рддреА рдЬреЛ рдЗрд╕реЗ рдорд┐рд▓рддреА рд╣реИред тАН
рд╕реАрдПрд╕рдПрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрдИрдПрдордУ рдкрд░ рднрд╛рд╡рдирд╛ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рд╡реНрдпрд╛рдкрдХ рд╕реБрдзрд╛рд░ рд╣реИрдВ

рд╕рдордЭрд╛! рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдореЗрд░реА рдЪрд┐рдВрддрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереА - рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ!

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЬреЗрдПрд╕рдПрд╕ рдпрд╛ рддреЛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ - рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╕рд░реНрд╡рд░ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдЪрд╛рджрд░реЗрдВ рдПрдХ рд╣рддреНрдпрд╛рд░рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдЧреА - рдХреНрдпрд╛ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ?

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

рдореИрдВ рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЯреИрдЧ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдХреНрд╖рд░ рднреА рдЯрд╛рдЗрдк рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрдиреНрд╣реЗрдВ рдЕрдорд╛рдиреНрдп рд╣реЛрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рд╕реНрд╡рддрдГ рдкреВрд░реНрдг рд╕реБрдЭрд╛рд╡ рдЖрджрд┐ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧреАред

image

@ рджрдХреНрд╖рд┐рдг-рдкрд╛рд╡

рд╕реАрдПрд╕рдПрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрдИрдПрдордУ рдкрд░ рднрд╛рд╡рдирд╛ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рд╡реНрдпрд╛рдкрдХ рд╕реБрдзрд╛рд░ рд╣реИрдВ

рдореИрдВ рдЕрднреА рднреА рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ рдХрд┐ рдХреЛрдИ рд░рд┐рдПрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░ рдЗрд╕рдореЗрдВ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ CSS рдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреЗрд╡рд▓ Angular рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ HTML рдХреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рднреА рдбрд╛рд▓рддреЗ рд╣реИрдВ? рд░рд┐рдПрдХреНрдЯ рдХреА рддрд╛рдХрдд рдпрд╣ рд╣реИ рдХрд┐ JSX рддрддреНрд╡ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл JS рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд╛рдВрдЪрдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реА рд╢рдХреНрддрд┐ рд╣реИ, рдФрд░ рд╡рд╣реА JSS рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИред

рдЬреЗрдПрд╕ рдЖрдВрджреЛрд▓рди рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реА рдкреВрд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдЧрддрд┐рд╢реАрд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдПрд╕ рд╕реЗ рдХрд╛рдлреА рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рдЬреЗрдПрд╕ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╢рдХреНрддрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдЫреЛрдЯрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ styled-components рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдПрдХ рд▓рд╛рд▓ рд╣реЗрд░рд┐рдВрдЧ рдХреА рддрд░рд╣ рд╣реИ:

  • рдпрд╣ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ "рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдореМрдЬреВрджрд╛ рд╕реНрдЯрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред" рд╡реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдореЗрдВ рдореВрд▓реНрдп рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╣рдореЗрд╢рд╛ рдЙрдирдХреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рджреНрд╡рд┐рддреАрдп рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдЧрд░рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред
  • рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде:
{
  color: 'black',
  '&$error': {
    color: 'red'
  }
}

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЗрдореЛрд╢рди рд╢реИрд▓реА рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕рдореНрдорд╛рди рджреЗрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдЧрд░рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ:

рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд▓реЗрдЦрди рд╢реИрд▓реА рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреИрдЯрд░реНрди рд╣реИ рдЬрд┐рд╕реЗ рд╕реАрдзреЗ рднрд╛рд╡рдирд╛ рдХреЗ рдореВрд▓ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

@lcswillems рдЖрдк рдХрдо рдХрд░рдХреЗ рдЖрдВрдХ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЗрди рд╕рднреА рдЫреЛрдЯреЗ HOCs рдХреЛ рд╣рд░ рд╕рдордп рдмрдирд╛рдирд╛ рдХрд┐рддрдиреА рдмрдбрд╝реА рдкрд░реЗрд╢рд╛рдиреА рд╣реИ (рдФрд░ рдпрд╣ рддрдереНрдп рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдСрдЯреЛрдЗрдореНрдкреЛрд░реНрдЯ рд╕рд┐рд╕реНрдЯрдо рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк @material-ui/core/Card рдХреЛ Card рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред MuiCard (рдФрд░ рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рд╣рд╛рде рд╕реЗ рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдирд╛ рд╕рдордп рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ))

const Card = styled(MuiCard)`
  display: flex;
`

const Details = styled.div`
  display: flex;
  flex-direction: column;
`

const CardContent = styled(MuiCardContent)`
  flex: 1 0 auto;
`

const CardMedia = styled(MuiCardMedia)`
  width: 151px;
`

рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рднрдпрд╛рдирдХ рдирд┐рд░реНрдгрдп рдердХрд╛рди рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдпрд╣ рддрдп рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░реИрдкрд░ рдФрд░ рд▓рд┐рдкрдЯреЗ рдШрдЯрдХ рдХрд╛ рдирд╛рдо рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рдПред

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ @ dfernandez-asapp рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрдм рд╡рд╣ рдХрд╣рддрд╛ рд╣реИ:

(рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж рд╣рд░ рдЬрдЧрд╣ рд╕реНрдЯрд╛рдЗрд▓ рдПрдЪрдУрд╕реА рд╣реЛрдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрди рдПрдЪрдУрд╕реА рд╕реЗ рдирдлрд░рдд рдХрд░рдиреЗ рд▓рдЧрд╛ ... рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдореЗрд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╣реИ)

рдПрдЪрдУрд╕реА рдХреЛ рдорд░рдиреЗ рдХреА рдмрд╣реБрдд рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдПрдХ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдкреИрдЯрд░реНрди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, react-redux useSelector рд╣реБрдХ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдЬреЛ connect HOC рд╕реЗ 100 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЕрдкреЛрд▓реЛ HOCs рд╕реЗ рд╣реБрдХ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛, рд╡рд╣реА useStyles рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ withStyles рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП CSS рдХреЛ JSS рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдкрд░реЗрд╢рд╛рдиреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрджрд┐ рд░реБрдЪрд┐ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рдпрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП VSCode рдПрдХреНрд╕рдЯреЗрдВрд╢рди рднреА рдмрдирд╛рдКрдВрдЧрд╛ред

рдЕрдЧрд░ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ VSCode рдПрдХреНрд╕рдЯреЗрдВрд╢рди рднреА рдмрдирд╛рдКрдВрдЧрд╛

@ jedwards1211 paulmolluzzo.convert-css-in-js рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк JSS рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╣рд╛рдБ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рдХреЗрд╡рд▓ рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдирд┐рдпрдо рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛ рдирд╣реАрдВред

@ jedwards1211 рдореИрдВрдиреЗ рдкрдврд╝рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХреНрдпрд╛ рдХрд╣рд╛, рдФрд░ рдЗрд╕ рд╕рдм рд╕реЗ рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣рдЯрддреЗ рд╣реБрдП - рдпрд╣ рдореБрдЭреЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдкрд░ рдЯреИрдм рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣рд╕ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧреА рдЙрддреНрдкрд╛рдж рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред

рдЯреНрд╡рд┐рдЯрд░ рдпрд╛ рд░реЗрдбрд┐рдЯ рдкрд░ рдЕрдкрдиреА рд░рд╛рдп/рд╣реЙрдЯ рдЯреЗрдХ рдЫреЛрдбрд╝реЗрдВ рдФрд░ рд╣рдо рдЙрди рдкрд░ рд╡рд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдмрдирд╛рдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рд╡реНрдпрд░реНрде рд▓реМ рдпреБрджреНрдзреЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рди рд░рдЦреЗрдВ ... рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдмреЗрд╣рддрд░ рд╣реИрдВ рдЙрд╕ рд╕реЗ

рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд┐ рдПрдордпреВрдЖрдИ рдореЗрдВ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ? рдореИрдВ

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

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

@ jedwards1211 рднрд▓реЗ рд╣реА рдЖрдкрдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, $#$ v4 $#$ рдореЗрдВ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ css prop рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдирд┐рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХрдо рд╕реЗ рдХрдо, рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЛ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ (MuiCard, StyledCard рдЖрджрд┐) рдХреЛ рдЙрдкрд╕рд░реНрдЧ рджреЗрдирд╛ред

import { Avatar } from '@material-ui/core';

// CSS is separate from the markup ЁЯСН
const avatarStyle = css`
  width: 32px;
  height: 32px;
  border-radius: 50%
`;

// No wrappers, prefixes in the markup (such as <MuiAvatar>, <StyledAvatar> etc.) ЁЯСН
function SomeComponent(props) {
  return <div> ... <Avatar css={avatarStyle} /> ... </div>
}

@ jedwards1211 рдпрджрд┐ рдЖрдк рд╕реНрдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗ рддреЛ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рднреА рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

const Card = styled(MuiCard)`
  display: flex;

  ${MuiCardContent} {
    flex: 1 0 auto;
  }

  ${MuiCardMedia} {
    width: 151px;
  }
`

const Details = styled.div`
  display: flex;
  flex-direction: column;
`

@koistya css рдкреНрд░реЛрдк рдПрдХ рддрд░рд╣ рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреЗрддрд╛рд╡рдиреА рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмреИрдмреЗрд▓ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗ рд▓реЛрдЧ рдЬреЛ рдЕрдкрдиреА tsx рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tsc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдлреНрд▓реЛ рдХреЛ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛ рдХрд┐ рдШрдЯрдХ рдХреЗ рдкрд╛рд╕ css рдкреНрд░реЛрдк рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реНрдпрд╡рдзрд╛рди рд╕реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдирд╛рдЦреБрд╢ рд╣реВрдВред @oliviertassinari рдиреЗ рджреВрд╕рд░реЗ рджрд┐рди рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рд╡рд╣ styled-components рдХреЛ MUI v5 рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реИред рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛрдЧрд╛ рдФрд░ JSS рдХрд╛ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдЗрд╕реЗ рджреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЭрдЯрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛ - рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдкрд░ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЬрдирдордд рд╕рдВрдЧреНрд░рд╣ рд╣реБрдЖ рд╣реИ? рдореИрдВ рдЗрдореЛрд╢рди рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рдЕрдЧрд░ рдХреБрдЫ рднреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдм рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред

рд╕рд╛рде рд╣реА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдлреНрд▓реЛ рдХреЛ рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХ рдореЗрдВ рдХреЛрдИ рд╕реАрдПрд╕рдПрд╕ рдкреНрд░реЛрдк рдирд╣реАрдВ рд╣реИред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдкрд░ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЬрдирдордд рд╕рдВрдЧреНрд░рд╣ рд╣реБрдЖ рд╣реИ?

рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИред рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ GitHub рдкрд░ рд╕рдВрд▓рдЧреНрди рд▓реЛрдЧ "рд╣рдорд╛рд░реЗ" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред рдпрд╣ рдореБрджреНрджрд╛ рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡реЛрдЯ рд╡рд╛рд▓рд╛ рдореБрджреНрджрд╛ рд╣реИред

рдореИрдВ рдЗрдореЛрд╢рди рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рдЕрдЧрд░ рдХреБрдЫ рднреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдм рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред

рдЖрдкрдиреЗ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЛ рдХреИрд╕реЗ рдорд╛рдкрд╛?

я╕П рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдХрд╛рдлреА рдХрдо рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ (/6 рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ)ред рдпрджрд┐ рдЖрдк npm рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЪрдпрди рдбрд╛рдЙрдирд▓реЛрдб рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ (рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ)ред

@ eps1lon рдпрд╣рд╛рдБ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рдерд╛: https://2019.stateofcss.com/technologies/css-in-js/

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЧрд▓рдд рдерд╛, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдЬреЛ рдХреБрдЫ рднреА рдпрд╛рдж рдЖрдпрд╛ рд╡рд╣ рдКрдкрд░ рдХреА рдУрд░ рдкреНрд░рддреАрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд░реБрдЭрд╛рди рдерд╛, рднрд▓реЗ рд╣реА рдпрд╣ рд╕рдордп рдХреЗ рд╕рд╛рде рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХрд╛ рдЪрд╛рд░реНрдЯ рдирд╣реАрдВ рд╣реИ (рдмрд╣реБрдд рд╣реА рд╕рдВрджрд┐рдЧреНрдз рдЪрд╛рд░реНрдЯ рдбрд┐рдЬрд╛рдЗрди):
image

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдпрд╣ рдорд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рд╕рднреА JSX рддрддреНрд╡ css рдкреНрд░реЛрдк рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд▓реЛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓ рдЧрдпрд╛, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлреНрд▓реЛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдпрд╣ рдореБрджреНрджрд╛ рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡реЛрдЯ рд╡рд╛рд▓рд╛ рдореБрджреНрджрд╛ рд╣реИред

рд╕рдордЭрд╛ред рд╡рд┐рд▓рд╛рдк

FWIW, styled-components рдХреЗ рдореБрдЦреНрдп рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рддрд┐ рдПрдХ рдЕрдорд┐рддреНрд░ рд░рд╡реИрдпрд╛ рд░рдЦрддрд╛ рд╣реИ:

https://github.com/styled-components/styled-components/issues/3012#issuecomment -583878486

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

@ jedwards1211 рдЕрдЧрд░ рдорджрдж рдХрд░рддрд╛ рд╣реИ рддреЛ css рдХреЗ рд▓рд┐рдП рдПрдХ рдмреИрдмреЗрд▓ рдореИрдХреНрд░реЛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реАрдПрд╕рдПрд╕/рдПрд╕рд╕реАрдПрд╕рдПрд╕/рдХрдо рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рд░ рдХреЛрдИ "рд╕реНрдЯрд╛рдЗрд▓" рддрд░реАрдХреЗ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рд▓рдХреНрд╖реНрдп рдХреНрдпрд╛ рд╣реИрдВ? рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЬреИрд╕реЗ рдХреБрдЫ рд╕рд┐рд╕реНрдЯрдо рдкрд░рдорд╛рдгреБ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЯреЗрд▓рд╡рд┐рдВрдбреНрд╕ рд╕реЗ рдЖрдиреЗ рд╕реЗ рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдЬреНрдпрд╛рджрд╛ рд╕рд╛рдл рдФрд░ рд╢рд╛рдпрдж рддреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИред

@ hc-codersatlas рдЖрдк packages/material-ui-benchmark рдореЗрдВ рдХреБрдЫ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

@koistya рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрдврд╝рддрд╛ рд╣реВрдВ рддреЛ рднрд╛рд╡рдирд╛ рдмрд╛рдХреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рджрд┐рдЦрддреА рд╣реИред

@oliviertassinari рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ "рдмрдирд╛рдирд╛" рдХрд░рддреЗ рд╣реИрдВ? рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЪрдпрди рдФрд░ рд╕реНрдЯреЛрд░реАрдмреБрдХ рдХреЗ рдЖрдкрдХреЗ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдВрднрд╡рддрдГ рдпреВрдЖрдИ рдШрдЯрдХреЛрдВ рдФрд░ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдЬреЛ рдХреБрдЫ рднреА рдмрдВрдбрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред UI рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЕрд▓рдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ред

рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ UI рдлреНрд░реЗрдорд╡рд░реНрдХ рдмрдбрд╝реЗ рдХреЛрд░ рд╕реЗ рд╣реИрдВ, рдпрд╛рдиреА рдХреБрдЫ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ "рдкрд╕рдВрдж" рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

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

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

image

@ South-Paw рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рд░рд▓реАрдХрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЖрдк рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ ${MuiCardContent} рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ MuiCardContent рдПрдХ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХ рдирд╣реАрдВ рд╣реИред

https://styled-components.com/docs/advanced#referring -to-other-components

рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдПрдЪрдУрд╕реА рд░реИрдкрд░ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ/рдирд╛рдордХрд░рдг рдирд┐рд░реНрдгрдпреЛрдВ рдХреА рдЙрддрдиреА рд╣реА рдорд╛рддреНрд░рд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐рд╕реА рдХреЛ рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИред

@mbrookes @oliviertassinari рд╕рд╢рд░реНрдд рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рдЖрдВрддрд░рд┐рдХ рдШрдЯрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдПрдХ styled-components -рдЖрдзрд╛рд░рд┐рдд рд╕рдорддреБрд▓реНрдп рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

// conditional class name
<MenuItem classes={{selected: classes.selectedItem}}>...</MenuItem>

// inner component class name
<Dialog classes={{paper: classes.dialogPaper}}>...</Dialog>

рдореИрдВ styled-components рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд╛рдВрдд рд╣реЛ рдЧрдпрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдареЛрд╕ рдпреЛрдЬрдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдХреЛ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдмреАрдИрдПрдо рд╢реИрд▓реА рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдкрд░ред

@ jedwards1211 рдЖрд╣ рдореЗрд░реА рдЧрд▓рддреАред рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рддрд╣рдд рдерд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдпрд╣ рдерд╛ рдХрд┐ рд╡реЗ рд╕реНрдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдШрдЯрдХ рдереЗ - рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ

@ jedwards1211 clsx рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрддреАрдд рдореЗрдВ рд╕рд╢рд░реНрдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ?

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

@ South-Paw рдХрд┐ (рдпрд╛ classnames ) рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рд╡рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ styled-components рд░реИрдкрд░ рдХреЗрд╡рд▓ рдПрдХ className AFAICT рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рд╣реЛрдЧрд╛ рдПрдХ рдШрдЯрдХ рдореЗрдВ рдХрдИ рдУрд╡рд░рд░рд╛рдЗрдб рд╡рд░реНрдЧ рдирд╛рдореЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдореЗрдВ <Dialog Paper={StyledPaper}>...</Dialog> рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЪрдпрдирд┐рдд MenuItem рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИред

@ jedwards1211 рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рддреНрд╡рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдореИрдВ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭ рд╕рдХреВрдВ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛рдВ рд╣реИ? рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдорджрдж рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдХреНрдпрд╛ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ

рд╣рд╛рдБ рдореИрдВ рдЖрдЬ рд░рд╛рдд рд╕рдордп рд╕реЗ рдмрд╛рд╣рд░ рд╣реВрдБ рд▓реЗрдХрд┐рди рдХрд▓ рдореИрдВ рдХрд░реВрдБрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ jss-codemorphs рдкрд░ рдХрд╛рдо рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ, рдЕрдВрдд рдореЗрдВ рдЪрд┐рдкрдХрд╛рдП рдЧрдП рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдЬреЗрдПрд╕рдПрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реАрдПрд╕рд╕реАрдУрдбреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред

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

рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдкрдврд╝рд╛ рд╣реИ рдХрд┐ рдлреЗрд╕рдмреБрдХ рдПрдХ рд╕реАрдПрд╕рдПрд╕-рдЗрди-рдЬреЗрдПрд╕ рд╕рдорд╛рдзрд╛рди рднреА рдУрдкрди-рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдпрд╣ рдмрд╛рд╣рд░ рдЖрддрд╛ рд╣реИ рддреЛ рдЙрд╕ рдкрд░ рднреА рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдирд╛ рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рде рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╖рдп рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрднрд╡ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдореИрдВ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдкреНрд░рдХрд╛рд░ рдЕрдХреНрд╕рд░ рдорджрдж рдХрд░рдиреЗ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдиреБрдХрд╕рд╛рди рдХрд░рддреЗ рд╣реИрдВред рдзреАрдореА рд╕рдВрдХрд▓рди рд╕рдордп, рдкрд╛рдЧрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ (рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЙрди рд╕рднреА рдиреЗрд╕реНрдЯреЗрдб Pick рдЬрд╛рджреВ рдХреЗ рдХрд╛рд░рдг рдПрдХ рджреБрдГрд╕реНрд╡рдкреНрди рд╣реИ)ред рдЬрдм рддрдХ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреАрдПрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИ, рддрдм рддрдХ рдпрд╣ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрджрдо рдкреАрдЫреЗ рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдХрд░реЗрдЧрд╛ред

рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдкрдврд╝рд╛ рд╣реИ рдХрд┐ рдлреЗрд╕рдмреБрдХ рдПрдХ рд╕реАрдПрд╕рдПрд╕-рдЗрди-рдЬреЗрдПрд╕ рд╕рдорд╛рдзрд╛рди рднреА рдУрдкрди-рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@venikx рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рдХрд┐рддрдиреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ? рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ рдЬреЛ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддреА рд╣реИ рдХрд┐ рд╡рд╣ https://reactpodcast.simplecast.fm/75 рдореЗрдВ рдереА, рддреЛ рдпрд╣ 5 рд╕рд╛рд▓ рдХрд╛ рд▓рдВрдмрд╛ рдЙрджреНрджреЗрд╢реНрдп рд▓рдЧ рд░рд╣рд╛ рдерд╛ред

рд╡рд╛рд╣ рд╡рд╛рдХрдИ? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА "рдЯрд╛рдЗрдорд▓рд╛рдЗрди" рджреЗ рджреА рд╣реИред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рдЙрд╕реА рд╕рдордп рд╕рдорд╡рд░реНрддреА рдореЛрдб рдХреЗ рд╕рд╛рде рдЖрдПрдЧрд╛ред рдмрд╣реБрдд рдмреБрд░рд╛ред

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

рдПрдХ рдФрд░ рдХрд╖реНрдЯрдкреНрд░рдж рдмрд╛рдд (рд▓реЗрдХрд┐рди рдпрд╣ рд╢рд╛рдпрдж рдлрд┐рд░ рд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд╕рдВрдж рд╣реИ) рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рд╢реИрд▓рд┐рдпреЛрдВ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред рдореИрдВ рдЙрд╕ рддрд░реНрдХ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдкрд░ рдХреНрд▓рд╛рд╕рдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЛ рдмрд╣реБрдд рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдПрдкреАрдЖрдИ рдЗрд╕ рд╕рдордп рдЗрдореНрд╣реЛ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдл рд╣реИред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрднрд╡ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдореИрдВ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЕрдм рддрдХ рдХрдо рд╕реЗ рдХрдо 4 рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ - рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЪреАрдЬреЗрдВ рдХрд░рддреЗ рд╕рдордп рд╡реЗ рдереЛрдбрд╝реЗ рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдордпреВрдЖрдИ рдЕрдВрдд рдкрд░ рд╣реЛрдЧрд╛ - рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЗ рдЕрдВрдд рдкрд░ рдирд╣реАрдВред

рдзреАрдореА рд╕рдВрдХрд▓рди рд╕рдордп

рдореИрдВрдиреЗ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВрдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд╣реАрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ?

рдкрд╛рдЧрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ (рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЙрди рд╕рднреА рдиреЗрд╕реНрдЯреЗрдб рдкрд┐рдХ рдЬрд╛рджреВ рдХреЗ рдХрд╛рд░рдг рдПрдХ рджреБрдГрд╕реНрд╡рдкреНрди рд╣реИ)

рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП @types рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ - рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рд╡рд╣рд╛рдВ рдХрд┐рд╕реА рднреА рдХрд╛рдо рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдпрд╣ рдЕрдм рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╕реБрдзрд╛рд░ рд╣реИ!

рдореИрдВ рдЙрд╕ рддрд░реНрдХ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдкрд░ рдХреНрд▓рд╛рд╕рдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЛ рдмрд╣реБрдд рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдХреЛрдИ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ:

const Box = styled.div`
  height: 160px
  width: 160px;
  background-color: black;

  .red {
    background-color: red;
  }
`;

// simple usage
<Box className="red" />

// get more complex with conditionals and using something like clsx (https://www.npmjs.com/package/clsx)
const isRed = true;
<Box className={clsx({ red: isRed })} />

рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреНрдпрдерд╛ рджрд╛рд╡рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореВрд▓ рдореБрджреНрджреЗ рдкрд░ 150 рдФрд░ 27 рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ 18 рдФрд░ 9 рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдореБрдЦрд░ рдЕрд▓реНрдкрд╕рдВрдЦреНрдпрдХ рд╣реИ рдЬреЛ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╣реБрд╕рдВрдЦреНрдпрдХреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХрджрдо рд╣реИ тАНтЩВ

@ South-Paw рдорддрджрд╛рди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ: JSS рдмрдирд╛рдо рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХред рдореБрдЦрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╕реНрдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдФрд░ рдпрд╣ рдирд╣реАрдВ рдХрд┐ рд╡реЗ рдЬреЗрдПрд╕рдПрд╕ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдЕрдЧрд░ рд╡реЛрдЯ

рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЗрдПрд╕рдПрд╕ рд╕реЗ рдХреБрдЫ рднреА рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдкреБрд░рд╛рдирд╛ рд╣реИред рдпрд╣ рдзреАрдорд╛ рдФрд░ рднрд╛рд░реА рд╣реИ (рдмрдВрдбрд▓ рдЖрдХрд╛рд░) рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП рд╡реЛрдЯ рдЖрдкрдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рд╕рднреА рд╕реНрдкреЗрдХреНрдЯреНрд░рдо рдЪреИрдЯ рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╢реЛрд░ рд╕реЗ рдирд╣реАрдВ рднрд░рддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд▓рдбрд╝ рд░рд╣реЗ рд╣реИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреМрди рддрд░реНрдХ рдЬреАрддрддрд╛ рд╣реИ?

рдореИрдВ рдХреЛрд░ рдЯреАрдо рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреЛрд░ рдЯреАрдо рдХреЗ рдлреИрд╕рд▓реЗ рдХреЛ рдХрдо рдХрд░рдХреЗ рдЖрдВрдХ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмрд╣рд╕ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЛрд░ рдЯреАрдо рдкрд░ рдЕрдзрд┐рдХ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП; рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдпрд╣ рд╕рд╛рдордЧреНрд░реА UI рдХреА рджрд┐рд╢рд╛ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд░ рдЯреАрдо рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред

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

рд▓реЗрдХрд┐рди, рдХреГрдкрдпрд╛, рдореИрдВ рдЖрдкрд╕реЗ рд╡рд┐рдирддреА рдХрд░рддрд╛ рд╣реВрдВ, рдХреЛрд░ рдЯреАрдо рдХреЛ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ, рдЙрди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрджреНрднреБрдд рдХреМрд╢рд▓ рд╡рд╛рд▓реЗ рд╕рдХреНрд╖рдо рд▓реЛрдЧ рд╣реИрдВред

рдпрд╣рд╛рдБ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реБрдВрджрд░ рд╣реИ

image

рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЗрдПрд╕рдПрд╕ рд╕реЗ рдХреБрдЫ рднреА рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдкреБрд░рд╛рдирд╛ рд╣реИред

@ hc-codersatlas рдкреБрд░рд╛рдирд╛ == рдкрд░рд┐рдкрдХреНрд╡ - рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдареАрдХ рд╣реИ рдПрдХ рдЧрд░реНрдо рдореБрджреНрджрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХреЛрдИ рдХреГрдкрдпрд╛ рдЗрд╕ рд╕рд░рд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ styled-components -рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЯреИрдЧ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд╕рд╛рде рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореБрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ (4 рдпрд╛ 5) рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред ?
рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╣рд╛рдБ рдпрд╛ рдирд╛ рдореЗрдВ рдЙрддреНрддрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрдХрдиреАрдХ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЗрдирд╡рд┐рдЬрд╝рди рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╣реИред

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

https://material-ui.com/guides/interoperability/

рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рдкрд╛рд╕ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд▓рд┐рдЯрд░рд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд╕рдорд░реНрдерди рд╣реИред

рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА JSS рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ CSS рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ:

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдЬреЗрдПрд╕рдПрд╕ рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдкрд░реЗрд╢рд╛рдиреА рджреВрд░ рд╣реЛ рдЬрд╛рдПрдЧреАред

@jedwards1211 рдЗрд╕реЗ рджреЗрдЦреЗрдВ
https://css2js.dotenv.dev/

@nainardev рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдФрд░ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИрдВ, рд╡реЗ рд╕реАрдПрд╕рдПрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ, рдиреЗрд╕реНрдЯреЗрдб рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ, рдПрдиреАрдореЗрд╢рди рдХреАрдлреНрд░реЗрдо, рдореАрдбрд┐рдпрд╛ рдХреНрд╡реЗрд░реА рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЯреВрд▓ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рд╕реАрдПрд╕рдПрд╕ рдЖрдк рдЗрд╕реЗ рдлреЗрдВрдХ рджреЗрдВрдЧреЗред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрддреНрддрд░ рдХрд╣реАрдВ рдЫреВрдЯ рдЧрдпрд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╡реИрд╕реЗ рднреА рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рд╕рд╛рдордЧреНрд░реА UI рдШрдЯрдХреЛрдВ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди ( less рдмрдирд╛рдо makeStyles рдмрдирд╛рдо styled-components ) рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдЧрддрд┐ рдореЗрдВ рд╣реИрдВ, рд╣рдорд╛рд░реА рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдХрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдирдП рдПрдордпреВрдЖрдИ рдХреЛрдб makeStyles рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рдЬреЛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ v5 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛, рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рдЖрд╕рдкрд╛рд╕ рддрдХрдиреАрдХреА рдЛрдг рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

  1. рдХреНрдпрд╛ makeStyles рд▓рдЧрднрдЧ v5 рдореЗрдВ рд╣реЛрдЧрд╛? рдпрд╣ styled-components рдФрд░ рдереАрдо рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ styled-components рдХреЗ рд╕рд╛рде рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:
const useStyles = makeStyles((theme) => ({
  paper: {
    padding: theme.spacing(2),
    textAlign: 'center',
    color: theme.palette.text.secondary,
  },
}));
  1. (v4) рдХреНрдпрд╛ рд╕реНрдЯрд╛рдЗрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ theme рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
const StyledContainer = styled.div`
  color: ${({ theme }) => theme.palette.primary.main};
  padding: ${({ theme }) => theme.spacing(1)};
  background-color: ${({ theme }) => theme.palette.background.paper};
`;
  1. рдорд╛рди рд▓реЗрдВ рдХрд┐ makeStyles v5 рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдХреНрдпрд╛ рд╣рдореЗрдВ рдХрд┐рд╕реА рдмрдбрд╝реЗ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд▓рд┐рдП styled-components рдереАрдо рдкреНрд░рджрд╛рддрд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА UI рдереАрдо рдкреНрд░рджрд╛рддрд╛ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рджрд░реНрд╢рди рд╣рд┐рдЯ рдХреА рдЙрдореНрдореАрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП?

рдордЯреЗрд░рд┐рдпрд▓ рдпреВрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИ, рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

@egilsster

  1. рд╣рд╛рдВ, рдпрд╛ рддреЛ @ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ/рд╢реИрд▓рд┐рдпреЛрдВ рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЬреЗрдПрд╕рдПрд╕ рд╕реЗ, рджреЗрдЦреЗрдВрдЧреЗред
  2. рд╣рд╛рдБ https://material-ui.com/guides/interoperability/#theme ,
const StyledContainer = styled.div`
  ${({ theme }) => `
  color: ${theme.palette.primary.main};
  padding: ${theme.spacing(1)};
  background-color: ${theme.palette.background.paper};
  `}
`;
  1. рдореБрдЦреНрдп рдореБрджреНрджреЗ рд╣реИрдВ 1. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдУрд╡рд░рд╣реЗрдб, рдПрдХ рдмрд╛рд░ рдХреА рд▓рд╛рдЧрдд, 2. рджреЛ рд╕реАрдПрд╕рдПрд╕-рдЗрди-рдЬреЗрдПрд╕ рд░рдирдЯрд╛рдЗрдо рд▓реЛрдб рдХрд░рдирд╛, рдЬрд┐рд╕рдореЗрдВ ~ 15 kB gzipped рдУрд╡рд░рд╣реЗрдб рд╣реИ, рдПрдХ рд╕рдорд╛рди рд▓рд╛рдЧрдд, рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрддрд░реА рд╕рд╣рд┐рдд: https://bundlephobia.com /result?p=@sentry/browser.

рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреАред

  1. рд╣рд╛рдБ рд╕рд╛рдордЧреНрд░реА-ui.com/guides/interoperability/#theme

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдХрд╛рдо рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдореИрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдЯреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╡реАрдПрд╕рд╕реАрдУрдбреА/рднрд╛рд╖рд╛ рд╕рд░реНрд╡рд░ рдХреЛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ theme рдХреНрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ styled-components рдЦреЛ рджреЗрддрд╛ рд╣реВрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рднреАред

рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

@oliviertassinari рдЕрдЧрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдЕрдм рд╕реАрдПрд╕рдПрд╕ рдПрдкреАрдЖрдИ рдЬреИрд╕реЗ <ListItem classes={{ selected: myCustomClassName}}> рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@ jedwards1211 classes API рдмрдирд╛ рд░рд╣реЗрдЧрд╛ред

рдареАрдХред рдореИрдВ рдереЛрдбрд╝рд╛ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ рдХрд┐ рдПрдордпреВрдЖрдИ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдореВрд▓ рддрддреНрд╡ рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

const MyRoot = styled('div')`
  // some nice styles
`;

const MyAwesomeChild = styled('div')`
  // some nice styles
`;

export function AwesomeRoot(props) {
  return (
    <MyRoot className={props.classes?.root}>
      <MyAwesomeChild className={props.classes?.child}/>
      {props.children}
    </MyRoot>
  );
}

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ @ jedwards1211 ?

@yordis рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдпреМрдЧрд┐рдХ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдЬреИрд╕реЗ https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Button/Button.js рдХреЛ рдХреИрд╕реЗ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░реЗрдВрдЧреЗ

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдореМрдЬреВрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ styled-components рдХреЗ рд╕рд╛рде рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрдзрд┐рдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

  outlined: {
    '&$disabled': {
      border: `1px solid ${theme.palette.action.disabledBackground}`,
    },
  },

рдореМрдЬреВрджрд╛ рдХреЛрдб рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд╕реНрдЯрдо рдУрд╡рд░рд░рд╛рдЗрдб рд╢рд╛рдпрдж рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдкрд░ рднреА рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред

рд╢рд╛рдпрдж рдпрд╣? рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд▓рдЧрддрд╛ рд╣реИ, рдореБрдЭреЗ рд╢рд╛рдпрдж рдХреБрдЫ рд╕рдВрджрд░реНрдн рдФрд░/рдпрд╛ рдЬрд╛рдирдХрд╛рд░реА рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИред

const MyOutlinedComponent = styled('div')`
  ${props.disabled && `
      border: `1px solid ${({ theme }) => theme.palette.action.disabledBackground}`,
  `}
`;

<MyOutlinedComponent disabled/>

@yordis рд╕рдВрднрд╡рддрдГред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд▓реЛрдЧ рд╢рд╛рдпрдж рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдВрдЧреЗ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг, рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрднрд╛рд╡рд┐рдд рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

рдЬрдм рдЖрдк рдордЬрдмреВрдд рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред рдЖрдкрдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ, рдпрд╛ рдореИрдВ рдЧрд▓рдд рдирд┐рд░реНрдгрдп рд▓реЗ рд░рд╣рд╛ рд╣реВрдВред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВ, рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред

@oliviertassinari рд╡рд┐рд╖рдп рдУрд╡рд░рд░рд╛рдЗрдб рдЕрднреА рднреА v5 рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдУрд╡рд░рд░рд╛рдЗрдб рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдордпреВрдЖрдИ рдХреЛ рдЕрднреА рднреА styled-components -рдЬреЗрдирд░реЗрдЯреЗрдб рд░реВрдЯ рдХреНрд▓рд╛рд╕ рдирд╛рдо рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреЗрдПрд╕рдПрд╕-рдЬреЗрдирд░реЗрдЯреЗрдб рдХреНрд▓рд╛рд╕ рдирд╛рдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

const theme = createMuiTheme({
  overrides: {
    MuiButton: {
      root: {
        '&$disabled': {
          color: myCustomColor,
        },
      },
    },
  },
});

@yordis рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕реЛрдЪрд╛, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ classes рдкреНрд░реЛрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпреМрдЧрд┐рдХ рдЪрдпрдирдХрд░реНрддрд╛ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдВрдЧреЗ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдереАрдо рдУрд╡рд░рд░рд╛рдЗрдб рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд╕реНрдЯрд╛рдЗрд▓ = {рдСрдмреНрдЬреЗрдХреНрдЯ} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрд╡рд▓ рд╕рд╛рджреЗ рдПрдордпреВрдЖрдИ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдПрдордпреВрдЖрдИ рдкрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЖрдирдВрдж рдорд┐рд▓рд╛ рд╣реИред

рдПрдХ рдкрд░рд┐рдгрд╛рдо рд╕реВрдЪреА рдкреГрд╖реНрда рд▓реЗрдВ, рдЬрд┐рд╕рдореЗрдВ 50 рдХрд╛рд░реНрдб рд╣реЛрдВ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдореАрдбрд┐рдпрд╛ рд╣рд┐рдВрдбреЛрд▓рд╛, рдЬрд╛рдирдХрд╛рд░реА, рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░, рдмрдЯрди рдЖрджрд┐ рд╣реЛрдВред

рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реЗрдВрдбрд░ рд╕рдордп рдореЗрдВ рд▓рдЧрднрдЧ рдЖрдзрд╛ рд╕реЗрдХрдВрдб рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛; const useStyles = makeStyles рдпрд╛ рд╢реИрд▓реА={рдСрдмреНрдЬреЗрдХреНрдЯ} рдХреА рддреБрд▓рдирд╛ рдореЗрдВред

рдореБрдЭреЗ рдЗрд╕ рд░реЛрдбрдореИрдк рдпреЛрдЬрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛; рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпреВрдЖрдИ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рдХрд┐рдВрдХ рдлреЗрдВрдХ рджреЗрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯреЙрдк-рдбрд╛рдЙрди рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

@Icehunter рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдирдореВрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдСрдирд▓рд╛рдЗрди рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@Icehunter рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдирдореВрдирд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдСрдирд▓рд╛рдЗрди рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

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

рдПрдХ рдкрд░рд┐рдгрд╛рдо рд╕реВрдЪреА рдкреГрд╖реНрда рд▓реЗрдВ, рдЬрд┐рд╕рдореЗрдВ 50 рдХрд╛рд░реНрдб рд╣реЛрдВ, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдореАрдбрд┐рдпрд╛ рд╣рд┐рдВрдбреЛрд▓рд╛, рдЬрд╛рдирдХрд╛рд░реА, рдХреНрд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░, рдмрдЯрди рдЖрджрд┐ рд╣реЛрдВред

@Icehunter рдХреНрдпрд╛ рдЖрдк рдЙрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╣рд╛рд░рд╛ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ? рдЪрд╛рд╣реЗ рд╡рд╣ 50 рдХрд╛рд░реНрдб рд╣реЛрдВ рдпрд╛ 500 рдХрд╛рд░реНрдб, рдЙрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдорд╛рд▓рд┐рдХрд╛рдирд╛ рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдк рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

styled() / styled.div рдПрдкреАрдЖрдИ _every_ рддрддреНрд╡ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдореЗрдВ рдУрд╡рд░рд╣реЗрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрдЧ рдирд╛рдореЛрдВ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рднреА рдпрд╣ рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред makeStyles рдХреЗ рд╕рд╛рде рдЖрдк рдПрдХ рдмрд╛рд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдХреЗрд╡рд▓ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдХреНрд╕рд░ рдХрд╛рдлреА рддреЗрдЬ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдПрдХ рдХреЛрдбрд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╕рдорд╛рдзрд╛рди styled MUI makeStyles рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 3-4x рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
image

styled рдПрдкреАрдЖрдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ @Icehunter рдХреА рднрд╛рд╡рдирд╛ рдХреЛ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реВрдЪрд┐рдпреЛрдВ/рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рднрд╛рд░реА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдпрд╣ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдмреИрдХрдЕрдк рдХреЗ рд░реВрдк рдореЗрдВ makeStyles рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред

@schnerd рдЗрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЪрд┐рдВрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЬрд┐рд╕ рддрд░рд╣ рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдпрд╣ рджреЗрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ ..." рдХреЗ рд╕рд╛рде рдкреЛрд╕реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдХреГрдкрд╛рд▓реБ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╛рдордиреЗ рдЖ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдЙрддреНрдХреГрд╖реНрдЯ рд╕реЗрдЯ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ

@tuxracer рдХреНрд╖рдорд╛ рдпрд╛рдЪрдирд╛ - рдЕрджреНрдпрддрдиред

@Icehunter рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЖрдкрдиреЗ рдПрд╕рд╕реА рдпрд╛ рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ?

@Icehunter рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЖрдкрдиреЗ рдПрд╕рд╕реА рдпрд╛ рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ?

рджреЛрдиреЛрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рд╣рдордиреЗ рдореЗрдХ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЬрд╛рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╛ рддреЛ рд╕реНрдЯрд╛рдЗрд▓ = {рдСрдмреНрдЬреЗрдХреНрдЯ} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдореЗрдВ рд╡рд╣реА рдкреВрд░реНрдг рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗред

рд╣рдо рд╕рдВрдкреВрд░реНрдг рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдореБрдЦреНрдп рд╕рд╛рдЗрдЯ рдкрд░ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИрдВред

рд╕реНрдЯреИрдХ рд╡рд╛рд░ рдпрд╣ рдиреЗрдХреНрд╕реНрдЯрдЬ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИред

рдмрд╕ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП (рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ):

рдореИрдВрдиреЗ рдПрд╕рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдХрд░ред рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдирд┐рдХрд▓рд╛ред

рдлрд┐рд░ рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдЭрд╛ рдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯрдЕрдк, рдФрд░ рд╕реНрдерд╛рдиреАрдп (рд╕рд┐рдореНрдпреБрд▓реЗрдЯреЗрдб рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ) рд╕реЗ рдореЗрдХ рд╕реНрдЯрд╛рдЗрд▓ рдФрд░/рдпрд╛ рд╢реИрд▓реА = {рдСрдмреНрдЬреЗрдХреНрдЯ} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдордпреВрдЖрдИ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рддреЗрдЬред

рдореИрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛; рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ; рддреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдКрдкрд░-рдиреАрдЪреЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдФрд░ рдЦреБрдж рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╢рд╛рдпрдж рдпрд╣? рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд▓рдЧрддрд╛ рд╣реИ, рдореБрдЭреЗ рд╢рд╛рдпрдж рдХреБрдЫ рд╕рдВрджрд░реНрдн рдФрд░/рдпрд╛ рдЬрд╛рдирдХрд╛рд░реА рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИред

const MyOutlinedComponent = styled('div')`
  ${props.disabled && `
      border: `1px solid ${({ theme }) => theme.palette.action.disabledBackground}`,
  `}
`;

<MyOutlinedComponent disabled/>

рд╢рд╛рдпрдж рдЗрд╕ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @ jedwards1211 рдЗрд╕ рдмрд╛рдд рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ SC рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: https://codesandbox.io/s/magical-snow-5bzd8

рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ рд╣реИред рддреЛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЙрд╕ рджрд┐рди рдЖрдиреЗ рдкрд░ v5 рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ

рдЕрд╕рд▓ рдореЗрдВ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╕рд╛рдордЧреНрд░реА UI рднрд╡рд┐рд╖реНрдп рдореЗрдВ Typography рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ JSS рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред

@ heb-mm рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рд╕реНрддреГрдд RFC рд╣реИ рдЬрд┐рд╕рдХрд╛ @oliviertassinari рдиреЗ 7 рдорд╛рд░реНрдЪ рдХреЛ рдЗрд╕ рд╕реВрддреНрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред

рдореБрдЭреЗ рдКрдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдФрд░ рдЙрд▓реНрд▓реЗрдЦ рджреЗрдЦрдиреЗ рдореЗрдВ рдПрдХ рдорд┐рдирдЯ рд╕реЗ рднреА рдХрдо рд╕рдордп рд▓рдЧрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕реЛрдЪ рд░рд╣реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣реЗрдм-рдПрдордПрдо рдиреЗ рдЕрдм рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рд╣рдЯрд╛ рджреА рд╣реИред

рдореИрдВрдиреЗ рдПрдХ рдХреЛрдбрд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╕рдорд╛рдзрд╛рди styled MUI makeStyles рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 3-4x рдзреАрдореЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

@schnerd рдореИрдВрдиреЗ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдЗрдирд╣рд╛рдЙрд╕ styled рдПрдкреАрдЖрдИ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ styled-components рдХреА рдирдХрд▓ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдХрд┐рддрдирд╛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реИред рджреЗрдЦреЗрдВ https://codesandbox.io/s/css-in-js-comparison-ljtjz?file=/src/App.js

image

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ @emotion/styled (рдЬрд┐рд╕рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдорд╛рди рдПрдкреАрдЖрдИ рд╣реИ) рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реЛрдЧрд╛? рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ @emotion/styled (рдЬрд┐рд╕рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдорд╛рди рдПрдкреАрдЖрдИ рд╣реИ) рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реЛрдЧрд╛? рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

https://codesandbox.io/s/css-in-js-comparison-sej1m

image

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

рд╣рдореНрдо, рдпрд╣ рдПрдордпреВрдЖрдИ рдореЗрдВ рд╣рдорд╛рд░реА рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рдкрд░реЗрд╢рд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ CSS, рдереАрдорд┐рдВрдЧ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рд╛рдордЧреНрд░реА UI рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкрдХреНрд╖ рдореЗрдВ styled-components рд╕реЗ рджреВрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред styled components рдкрд╣рд▓реЗ рддреЛ рдареАрдХ рдерд╛, рд╣рдордиреЗ рдЗрд╕рдХреЗ рдКрдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдереАрдорд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЬрдм UI рдмрдбрд╝рд╛ рд╣реБрдЖ, рддреЛ CSS рдиреЗ рднреА рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ред рд╣рдо рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЗрдирд▓рд╛рдЗрди рд╕реАрдПрд╕рдПрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЛрдмрд╛рд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рдХреНрд░рдп рдмрд┐рдВрджреБ рдерд╛ред рдореИрдВ

рдЗрд╕рд▓рд┐рдП рдореИрдВ рдордЯреЗрд░рд┐рдпрд▓ рдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдирдпрд╛ рд╣реВрдВ рдФрд░ рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА v5 рдХреА рдЕрд▓реНрдлрд╛ рд░рд┐рд▓реАрдЬ рджреЗрдЦреА рд╣реИред @ ldiego08 рдЖрдкрдиреЗ рдХрд╣рд╛:

рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рд╛рдордЧреНрд░реА UI рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рд╕реЗ рджреВрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдордЯреЗрд░рд┐рдпрд▓ рдпреВрдЖрдИ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЖрдЧреЗ рдЪрд▓рдХрд░ рдордЯреАрд░рд┐рдпрд▓ рдпреВрдЖрдИ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? рдореИрдВрдиреЗ рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк CSS-IN-JS рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ: https://material-ui.com/system/basics/ред рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВрдиреЗ рд╕реАрдПрд╕рдПрд╕-рдЗрди-рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рднреЛрдВ рдХрд╛ рдЖрдирдВрдж рд▓рд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ "рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдПрд╕рдПрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЗрдПрд╕ рдХреА рд╢рдХреНрддрд┐ рднреА рд╣рд╛рде рдореЗрдВ рд╣реИред

рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ API I рдЗрддрдирд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдХреНрдпреЛрдВ рд╣реИред рдпрд╣ рдзреАрдорд╛ рд╣реИ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╡рд░реНрдЧ рдирд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдм рдХреБрдЫ рдШрдЯрдХ рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рд╕рд╛рде рд╣реА, рдЯреИрдЧ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдмрд╛рдд рд╣реИ? рд╣рдо рд╕реАрдПрд╕рдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ? :D рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдХрдВрдкреЛрдЬрд╝рд┐рд╢рди рдФрд░ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЖрджрд┐ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдкреНрд▓реЗрди рдЗрдореЛрд╢рди css рдФрд░ cx рдлрдВрдХреНрд╢рди рдЬреЛ css рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдЯрд░реНрди рдХреНрд▓рд╛рд╕ рдХрд╛ рдирд╛рдо рд╕рдмрд╕реЗ рд▓рдЪреАрд▓рд╛ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА API рд╣реИред рддреЛ рдмрд╕ рднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдФрд░ рдХрдХреНрд╖рд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрдкрд░ рд▓рдЪреАрд▓рд╛ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИред рддреЛ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдк "рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдбреЗрд╡рд▓рдкрд░ рдПрдкреАрдЖрдИ" рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рдХрд╛ рд╡реНрдпрд╛рдкрд╛рд░ рдХреНрдпреЛрдВ рдХрд░реЗрдВрдЧреЗ (рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рднрдпрд╛рдирдХ рдПрдкреАрдЖрдИ рд╣реИ)ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ API I рдЗрддрдирд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдХреНрдпреЛрдВ рд╣реИред рдпрд╣ рдзреАрдорд╛ рд╣реИ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╡рд░реНрдЧ рдирд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдм рдХреБрдЫ рдШрдЯрдХ рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рд╕рд╛рде рд╣реА, рдЯреИрдЧ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдмрд╛рдд рд╣реИ? рд╣рдо рд╕реАрдПрд╕рдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ? :D рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдХрдВрдкреЛрдЬрд╝рд┐рд╢рди рдФрд░ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЖрджрд┐ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдкреНрд▓реЗрди рдЗрдореЛрд╢рди css рдФрд░ cx рдлрдВрдХреНрд╢рди рдЬреЛ css рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдЯрд░реНрди рдХреНрд▓рд╛рд╕ рдХрд╛ рдирд╛рдо рд╕рдмрд╕реЗ рд▓рдЪреАрд▓рд╛ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА API рд╣реИред рддреЛ рдмрд╕ рднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдФрд░ рдХрдХреНрд╖рд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрдкрд░ рд▓рдЪреАрд▓рд╛ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИред рддреЛ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдк "рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдбреЗрд╡рд▓рдкрд░ рдПрдкреАрдЖрдИ" рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рдХрд╛ рд╡реНрдпрд╛рдкрд╛рд░ рдХреНрдпреЛрдВ рдХрд░реЗрдВрдЧреЗ (рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рднрдпрд╛рдирдХ рдПрдкреАрдЖрдИ рд╣реИ)ред

рдореБрдЭреЗ рдПрдХ рд╣реА рдЪрд┐рдВрддрд╛ рдереА :) рд╢рд╛рдпрдж рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕рд╛рдлрд╝ рдХрд░ рджреЗрддрд╛ рд╣реИ:
https://github.com/mui-org/material-ui/issues/6115#issuecomment -580449539

@martinjlowm рд╣рд╛рдБ, рд╣рдо рдПрдХ рд╣реА рдкреГрд╖реНрда рдкрд░ рд╣реИрдВ :) рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА UI рдЯреАрдо рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдмрдврд╝рд┐рдпрд╛ рддрд░реАрдХрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд▓рдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ, рди рдХрд┐ рдХрд┐рд╕реА рднреА рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рдЬреЗрдПрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЬреЛрдбрд╝реЗ, рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдЪреБрдирдиреЗ рджреЗрдирд╛ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреБрдЫ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдмрдЪрд╛рдПрдВред рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рднреА рд░рдЦрддреЗ рд╣реБрдП рдФрд░ MuiTheme API рдмрдирд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдЬреЗрдПрд╕ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдШрдЯрдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрд╕рд╛рди рдЧрддрд┐рд╢реАрд▓ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд╕реАрдПрд╕рдПрд╕ рдпрд╛ рдкреВрд░реЗ рдШрдЯрдХреЛрдВ рдХреЛ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдпрд╛ рд╣рдЯрд╛рддреЗ рд╕рдордп рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ (рдЬрд╣рд╛рдВ рдСрдмреНрдЬреЗрдХреНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмреЗрд╣рддрд░ рд╣реИ), рдкреНрд░рджрд░реНрд╢рди (рдмрд╛рд╣рд░реА рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдХреЗ рд╕рдореВрд╣ рд╕реЗ рдЕрдкреНрд░рдпреБрдХреНрдд рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░рдирд╛) , рдЖрджрд┐.. рдФрд░ рдлрд┐рд░, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рд▓реЛрдЧ рдХреБрдЫ рд╕рдВрдкрд╛рджрдХ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдЦрдирд╛ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЖрдкрдХреЛ рд╕рдВрджрд░реНрдн рд╕реЗ рдкреНрд░реЙрдкреНрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП ${} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреГрд╖реНрдарднреВрдорд┐ рдУрдбреА div рддрддреНрд╡ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреЗ рд▓рд┐рдП, рд╡рд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЧрдиреНрджрд╛ рд╣реИ рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдкрдардиреАрдп рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдХреЛрд╕ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реВрдВ, рдмрд╕ рдпрд╣ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рд░ рдбреЗрд╡рд▓рдкрд░ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд┐рдпрд╛, рддреЛ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рд╡реНрдпрд╛рдкрд╛рд░ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реМрджрд╛ рдХреИрд╕реЗ рд╣реИред :)

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

рдХреБрдЫ рдПрдбреЗрдкреНрдЯрд░ рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реАрдПрд╕рдПрд╕-рдЗрди-рдЬреЗрдПрд╕ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдЯрд╛рдЗрд▓ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ? рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд╕рд╛рдордЧреНрд░реА-рдпреВрдЖрдИ рдкреИрдХреЗрдЬ рдХреЗ рднреАрддрд░ рдПрдХ рд╕реБрд╕рдВрдЧрдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЙрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдПрдбреЗрдкреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдХреА рддрд░реНрдЬ рдкрд░ рдХреБрдЫ:

import {EmotionAdapter, StyledComponentAdapter, ThemeProvider} from "@material-ui/core/styles";
...
return 
    (<ThemeProvider theme={theme} adapter={EmotionAdapter}>
        ...
    </ThemeProvider>)

@vdjurdjevic рдореИрдВ https://github.com/mui-org/material-ui/issues/6115#issuecomment -652762320 рдкрд░ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕рд╣рдордд рд╣реВрдВред рдЖрдк рдЬрд┐рд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд▓реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдпрд╣ рд╕рд╛рд░рд╛рдВрд╢ рдЖрдкрдХреЛ рдкрд╕рдВрдж рдЖ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ https://github.com/mui-org/material-ui/issues/16947#issuecomment -653797178 рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рд╣реИред

рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХреНрдпреЛрдВ рд▓реЛрдЧ рдХреБрдЫ рд╕рдВрдкрд╛рджрдХ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ

рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХреБрдЫ рдХрд╛рд░рдг:

  • рд╣рдо React.createElement('div', {}) рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдХрд░реАрдмред
  • рд╡реЗрдм рджреЗрд╡ рдореЗрдВ рд╕реАрдорд┐рдд рдЕрдиреБрднрд╡ рд╡рд╛рд▓реЗ рд▓реЛрдЧ (рд╡реЗ рдХрдИ рд╣реИрдВ) рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдкреАрдЖрдИ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕реАрдПрд╕рдПрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЛ рд▓реЗрдВ, рдЕрдкрдиреА рдЯреАрдо рдХреЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрдЫреЗрдВ рдХрд┐ рд╡реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ :)ред
  • рджреЗрд╡ рдЙрдкрдХрд░рдг рдФрд░ рд╕реНрд░реЛрдд рдХреЗ рдмреАрдЪ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдирдлрд░рдд рд╣реИ)ред

@oliviertassinari рдареАрдХ рд╣реИ, рдпреЗ рдХреБрдЫ рдареЛрд╕ рдмрд┐рдВрджреБ рд╣реИрдВ, рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ :) рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдореЗрд░реЗ рд▓рд┐рдП (рдПрдХ рдбрд┐рдЬрд╛рдЗрдирд░ рдирд╣реАрдВ, рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдирд╣реАрдВ, рд╡рд░рд┐рд╖реНрда рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ), рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ рдФрд░ рдЯреИрдЧ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдХреНрд╖рд░ рдХрднреА рднреА рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдореИрдВрдиреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рджрд┐рд╢рд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдкрдврд╝рд╛, рдФрд░ рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ рд╕реАрдПрд╕рдПрд╕ рдЗрдВрдЬрди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛрдЧрд╛ред рдЬрдм рддрдХ рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ (рдпрджрд┐ рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд╕рдВрдж рд╣реИ)ред рдФрд░ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╡реА 4 рдХреЗ рд╕рд╛рде рдЬреЗрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рд░рд╣реВрдВрдЧрд╛, рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд╣реИрдВ (рдЬреИрд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рд░рдЪрдирд╛ рдХрд░реЗрдВ)ред рдореБрдЭреЗ рднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рдЗрд▓рд┐рд╕ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ рддрд╛рдХрд┐ рдХреБрдЫ рд╕рдорд╛рди рд╣реЛред

рдкреБрдирд╢реНрдЪ. рдореИрдВ JSX рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВ :) рдпрд╣ рдЬрд▓реНрджреА рд╕реЗ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рддреАрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрди рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЧрддрд┐рд╢реАрд▓ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ createElement рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдпрд╣ рдирд╣реАрдВ рдХрд╣рдирд╛ рдХрд┐ createElement рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рдирд╛ рдХрд┐ JSX рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдлрд╝реНрд▓рдЯрд░ рдХреЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдбреАрдПрдХреНрд╕ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рджрд┐рди рд╡реЗрдм рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред

@oliviertassinari рд╣рдорд╛рд░реЗ рдЪрд▓ рд░рд╣реЗ рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬреИрд╕рд╛ рдХрд┐ https://github.com/mui-org/material-ui/issues/6115#issuecomment -643398897 рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдЯреАрдо рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░реЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИред рдпреЗ рдзреАрдорд╛ рд╣реИред рд╣рдореЗрд╢рд╛ рд░рд╣рд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рдПрдХ рджреЗрд╡ рд╣реЛрдиреЗ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдЬреЗрдПрд╕ рдиреЛрдЯреЗрд╢рди рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╕реАрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдпрд╣ рдиреМрдХрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдкреИрдХреЗрдЬ рдореЗрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрд╡реЛрдВ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдирд╛ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ (рдореИрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЛрд▓ рд░рд╣рд╛ рд╣реВрдВ) рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рд░реЗрдЦрд╛ рдЖрддреА рд╣реИред

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

рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯреАрдо рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рдиреЗ рд╕реНрдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╕реБрдирд╛ рдФрд░ рдЖрдЧреЗ рдХреА рдЬреБрддрд╛рдИ рдХреА рдФрд░ рдЕрдм рд╕рд╛рдЗрдЯ рдзреАрдореА рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╢рд╛рдЦрд╛ рдореЗрдВ рдореЗрдХ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЯреАрдЯреАрдЖрдИ рдкрд░ 50% (10 рд╕реЗрдХрдВрдб) рдмрдЪрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдЙрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдХрд╣рд╛ рдерд╛, рдЬреЗрдПрд╕ рдиреЛрдЯреЗрд╢рди рд╣рд░ рдХрд┐рд╕реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдЬреЛ рдЪрд╛рд╣реЗ рдЪреБрди рд╕рдХрддреА рд╣реИ рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рдирдХрд╛рд░реА рдмрдирд╛рдПрдВред

[рдкреНрд░рд╢реНрди рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ред]

@haysclark рдХреГрдкрдпрд╛ RFC рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдорд░реНрдерди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП StackOverflow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

@haysclark рдХреГрдкрдпрд╛ RFC рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдорд░реНрдерди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП StackOverflow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

@mbrookes рд╣реЗрдб-рдЕрдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ @emotion/styled (рдЬрд┐рд╕рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдорд╛рди рдПрдкреАрдЖрдИ рд╣реИ) рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реЛрдЧрд╛? рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

https://codesandbox.io/s/css-in-js-comparison-sej1m

image

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

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдмреЙрдХреНрд╕ рдШрдЯрдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдЖрдкрдХреА рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рд╕реЗ рдХреА рдЬрд╛рдПрдЧреА, рдФрд░ рдЕрдЪреНрдЫреЗ рдорд╛рдк рдХреЗ рд▓рд┐рдП рдЪрдХреНрд░-рдпреВрдЖрдИ рдХреЗ рдмреЙрдХреНрд╕ рдХреЛ рдЬреЛрдбрд╝рд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдереЗ: рдкреА
https://codesandbox.io/s/css-in-js-comparison-forked-mg3gx?file=/src/App.js

image

@Nvveen рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЪрдХреНрд░-рдпреВрдЖрдИ v1 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдмреЗрд╣рддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрдореЛрд╢рди v11 рднреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдмреАрдЯрд╛ рдореЗрдВ рд╣реИред

@Nvveen рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЪрдХреНрд░-рдпреВрдЖрдИ v1 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдмреЗрд╣рддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрдореЛрд╢рди v11 рднреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдмреАрдЯрд╛ рдореЗрдВ рд╣реИред

рдирд╡реАрдирддрдо рдЖрд░рд╕реА рдХреЗ рд╕рд╛рде рдмрд╕ рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдХреЛрдИ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдЕрдВрддрд░ рдирд╣реАрдВ; рдпрд╣ рдЕрднреА рднреА рдирд┐рдпрдорд┐рдд SC рдХреА рддрд░рд╣ рд▓рдЧрднрдЧ 1.5x рд╕реЗ 2x рдзреАрдорд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдПрдордпреВрдЖрдИ рдмреЙрдХреНрд╕ рдЗрддрдирд╛ рдзреАрдорд╛ рдХреНрдпреЛрдВ рд╣реИред

@Nvveen рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЪрдХреНрд░-рдпреВрдЖрдИ v1 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ? рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдмреЗрд╣рддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрдореЛрд╢рди v11 рднреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдмреАрдЯрд╛ рдореЗрдВ рд╣реИред

рдирд╡реАрдирддрдо рдЖрд░рд╕реА рдХреЗ рд╕рд╛рде рдмрд╕ рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдХреЛрдИ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдЕрдВрддрд░ рдирд╣реАрдВ; рдпрд╣ рдЕрднреА рднреА рдирд┐рдпрдорд┐рдд SC рдХреА рддрд░рд╣ рд▓рдЧрднрдЧ 1.5x рд╕реЗ 2x рдзреАрдорд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдПрдордпреВрдЖрдИ рдмреЙрдХреНрд╕ рдЗрддрдирд╛ рдзреАрдорд╛ рдХреНрдпреЛрдВ рд╣реИред

рдпрд╣ рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрд╕рд╕реА рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╣рдж рддрдХ рдмреЗрд╣рддрд░ рд╣реИред

рдореЗрд░реА рдорд╢реАрди рдкрд░, рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рд╡рд╣ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рддреБрд▓рдирд╛ рдХрд░рдирд╛

  1. рдкрд╣рд▓реЗ рдмреЙрдХреНрд╕ https://codesandbox.io/s/css-in-js-comparison-forked-tqlg1?file=/src/App.js
    Capture dтАЩe╠Бcran 2020-08-16 a╠А 19 49 55

  2. рдЕрдВрддрд┐рдо рдмреЙрдХреНрд╕ https://codesandbox.io/s/css-in-js-comparison-forked-js6th?file=/src/App.js
    Capture dтАЩe╠Бcran 2020-08-16 a╠А 19 49 45

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрдореЛрд╢рди, рдПрд╕рд╕реА, рдФрд░ рдЪрдХреНрд░ рд╕рднреА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЕрдзрд┐рдХрддрдо рдкреВрд░реНрдгрддрд╛ рдХреЗ рдХрд░реАрдм рд╣реИрдВ, рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдЫреЛрдЯреЗ рдШрдЯрдХ рдХреА рдЕрдкрдиреА рд╢реИрд▓реА рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИ, рдПрдордпреВрдЖрдИ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рдкреЗрд░реНрдл рдкрд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдкреВрд░реЗ рдШрдЯрдХ рдкреЗрдбрд╝ рдХреЗ рд▓рд┐рдП рдореЗрдХ рд╕реНрдЯрд╛рдЗрд▓/рд╢реБрджреНрдз рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдПрдХ рд╕реНрдЯрд╛рдЗрд▓ рд╢реАрдЯ рд╣реЛред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╛рд╡рдирд╛, рдПрд╕рд╕реА рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд 30 рдПрдордПрд╕ рдкреНрд░рддреНрдпреЗрдХ рдЫреЛрдЯреЗ рдШрдЯрдХ рдХрд╛ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдКрдкрд░реА рднрд╛рдЧ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдШреБрдорд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

@ jedwards1211 рдЕрдЧрд░ рдпрд╣ рдбреАрдПрдХреНрд╕ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рддреЛ рдПрдЯрд▓рд╕рд┐рдпрди рдиреЗ рдПрдХ рдРрд╕рд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬреЛ рдЗрд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

mattmiddlesworth picture mattmiddlesworth  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rbozan picture rbozan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

anthony-dandrea picture anthony-dandrea  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

revskill10 picture revskill10  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

iamzhouyi picture iamzhouyi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ