рдЙрддреНрддрд░рджрд╛рдпреА рдпрд╛ рдЙрддреНрддрд░рджрд╛рдпреА? рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд░рд┐рдПрдХреНрдЯрд░ рдШрдЯрдХ рд╕рдВрд░рдЪрдирд╛



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

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

рдЕрдиреБрдХреВрд▓реА (рдЕрдиреБрдХреВрд▓реА) рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рджреГрд╢реНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдПрдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЙрддреНрддрд░рджрд╛рдпреА (рдЙрддреНрддрд░рджрд╛рдпреА) рдПрдХ рдПрдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓ рд╣реИред

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

рд▓реЗрдЖрдЙрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рдбрд┐рдЬрд╛рдЗрдирд░, рд╕рд╛рде рд╣реА рд╕рд╛рде рдбреЗрд╡рд▓рдкрд░реНрд╕, рдЕрдХреНрд╕рд░ рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрдХреВрд▓реА рдФрд░ рдЙрддреНрддрд░рджрд╛рдпреА рддрд░реНрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

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

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

рд╕рд╛рде рд╣реА, рдореИрдВ рд▓рдЧрднрдЧ CSS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ , рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╣рдо рдШрдЯрдХ рддрд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рдлреНрд░рдВрдЯреЗрдВрдб @youla


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

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

@ youla- рд╡реЗрдм / рдРрдк-рд╡рд░реНрдЧреАрдХреГрдд - рд╕реВрдЪреА / рдЙрддреНрдкрд╛рдж / рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧред рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣рд╛рдВ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдиреБрдХреВрд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП ред

@ youla-web / app-b2b рдкреЗрд╢реЗрд╡рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддреЗ рдХреЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рд╣реИрдВ ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рдЗрди рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓реА рдШрдЯрдХ рд▓рд┐рдЦрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ isMobileред

рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЛрдмрд╛рдЗрд▓ рдФрд░& <рдШрдЯрдХ /> рд╣реИ


import React from 'react'

const App = (props) => {
 const { isMobile } = props

 return (
   <Layout>
     {isMobile && <HeaderMobile />}
     <Content />
     <Footer />
   </Layout>
 )
}

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

рд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг


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

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

  1. рд╕реАрдорд╛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╖рдп рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ (рдпрджрд┐ рдЖрдкрдХрд╛ рд╕реАрдПрд╕рдПрд╕ рд╕рдорд╛рдзрд╛рди рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ)ред рдорд╛рди рд╕реНрд╡рдпрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдбрд┐рдЬрд╛рдЗрдирд░ рдЖрдкрдХреЗ UI рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдкрд╛рддреЗ рд╣реИрдВ ред
  2. рд╣рдо рдПрдХ redux / mobx / рд╕рдВрджрд░реНрдн / рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВ ред рдХрд╣реАрдВ рднреА, рдпрджрд┐ рдХреЗрд╡рд▓ рдШрдЯрдХ рдФрд░, рдЕрдзрд┐рдорд╛рдирддрдГ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХреА рдЗрд╕ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдереАред
  3. рд╣рдо рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рдИрд╡реЗрдВрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдорд╛рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдШрдЯрдХ рдЯреНрд░реА рдХреЗ рдЕрдкрдбреЗрдЯ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред
  4. рд╣рдо рд╕рд░рд▓ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ ( isMobile,isDesktop ) рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ ред

рдпрд╣рд╛рдБ рдЫрджреНрдо рдХреЛрдб рд╣реИ рдЬреЛ рдХрд╛рдо рдХреЗ рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:

const breakpoints = {
 mobile: 991
}

export const state = {
 ui: {
   width: null
 }
}

const handleSubscribe = () => {
 state.ui.width = window.innerWidth
}

export const onSubscribe = () => {
 window.addEventListener('resize', handleSubscribe)
}

export const offSubscribe = () =>
 window.removeEventListener('resize', handleSubscribe)

export const getIsMobile = (state: any) => {
 if (state.ui.width <= breakpoints.mobile) {
   return true
 }

 return false
}

export const getIsDesktop = (state) => !getIsMobile(state)

export const App = () => {
 React.useEffect(() => {
   onSubscribe()

   return () => offSubscribe()
 }, [])

 return <MyComponentMounted />
}

const MyComponent = (props) => {
 const { isMobile } = props

 return isMobile ? <MobileComponent /> : <DesktopComponent />
}

export const MyComponentMounted = anyHocToConnectComponentWithState(
 (state) => ({
   isMobile: getIsMobile(state)
 })
)(MyComponent)

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

рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, user-agentрдпрд╣ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ , рдЬрдмрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рд╕рдЦреНрддреА рд╕реЗ рдмреЛрд▓ рд░рд╣рд╛ рд╣реИ, рд╢рд╛рдпрдж рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЯреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдореЗрдВ рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдФрд░ рдкреБрдирд░рд╛рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ window.navigator.userAgent,рдорд╛рди рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рдмрд╛рд░ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ , рдФрд░ рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЛрдмрд╛рдЗрд▓-рдбрд┐рдЯреЗрдХреНрдЯ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбрд┐рд╡рд╛рдЗрд╕-рдкрддрд╛ , рдЖрджрд┐ред

рджреГрд╖реНрдЯрд┐рдХреЛрдг user-agentрд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдЬрд┐рд╕ рдХрд┐рд╕реА рдиреЗ рднреА рдЕрдиреБрдХреВрд▓реА рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдЖрдИрдкреИрдб рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ "рдореИрдЬрд┐рдХ рдЯреНрд╡рд┐рд╕реНрдЯ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдЬреЛ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рдбреЗрд╕реНрдХрдЯреЙрдк рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ user-agentрдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓реА / рдЙрддреНрддрд░рджрд╛рдпреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ user-agent рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░, рд▓реЗрдХрд┐рди рдпрд╣ "рдореЛрдмрд╛рдЗрд▓" рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛ рдХреЛ рдирд┐рдЪреЛрдбрд╝рддрд╛ рд╣реИ, рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧрддрд┐рд╢реАрд▓рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкреЗрдХреНрд╖рд╛ рди рдХрд░реЗрдВ user-agentред рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рдмрд╛рд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ isSafari,isIEрдЖрджрд┐ рдЬреЛ рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА "рд╕реБрд╡рд┐рдзрд╛рдУрдВ" рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ, рд╣рдо рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ isCheesySafariрдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рдХрд╛ рдЕрд░реНрде рд╣реИ, user-agentрд╕рдлрд╛рд░реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░рд┐рд╡рд╛рд░ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИ isSuperCheesySafari, рдЬреЛ iOS рд╕рдВрд╕реНрдХрд░рдг 11 рдХреЗ рдЕрдиреБрд░реВрдк рдПрдХ рдореЛрдмрд╛рдЗрд▓ рд╕рдлрд╛рд░реА рдХрд╛ рдЕрд░реНрде рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдИ рдмрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз рд╣реЛ рдЧрдпрд╛ рд╣реИ: https://hackernoon.com/how-to-fix-the-ios-11-input-element -рдЗрди-рдлрд┐рдХреНрд╕реНрдб-рдореЛрдбрд▓реНрд╕-рдмрдЧ-рдПрдПрдлрд╝ ремрем рд╕реА f рдмреА рей рдПрдл mod ред

export const isMobileUA = (() => magicParser(window.navigator.userAgent))()

import isMobileUA from './isMobileUA'

const MyComponent = (props) => {
 const { isMobile } = props

 return (isMobile || isMobileUA) ? <MobileComponent /> : <DesktopComponent />
}

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

рдШрдЯрдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╕рдВрдЧрдарди


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

рдкрд╣рд▓рд╛ рдкреНрд░рдХрд╛рд░ рдШрдЯрдХреЛрдВ, рд╕реЗрд▓ рдлреЛрди рдХреЗ рддрд╣рдд рдпрд╛ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рддрд╣рдд рддреЗрдЬ рд╣реИред рдРрд╕реЗ рдШрдЯрдХреЛрдВ рдореЗрдВ, рдирд╛рдореЛрдВ рдореЗрдВ рдЕрдХреНрд╕рд░ рдореЛрдмрд╛рдЗрд▓ / рдбреЗрд╕реНрдХрдЯреЙрдк рд╢рдмреНрдж рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдШрдЯрдХ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдШрдЯрдХ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ <MobileList />рд╣реИ @youla/uiред

import { Panel, Cell, Content, afterBorder } from './styled'
import Group from './Group'
import Button, { IMobileListButtonProps } from './Button'
import ContentOrButton, { IMobileListContentOrButton } from './ContentOrButton'
import Action, { IMobileListActionProps } from './Action'

export default { Panel, Group, Cell, Content, Button, ContentOrButton, Action }
export {
 afterBorder,
 IMobileListButtonProps,
 IMobileListContentOrButton,
 IMobileListActionProps
}

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


рдФрд░ рд╕рд╛рдЗрдЯ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рдШрдЯрдХ рднреА рд╣реИ рдЬреЛ <DesktopList />рдбреЗрд╕реНрдХрдЯреЙрдк рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реВрдЪреА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ

рдШрдЯрдХреЛрдВ рдореЗрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рдореЛрдмрд╛рдЗрд▓ рджреЛрдиреЛрдВ рдХреЗ рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВ , рдЬреЛ @ youla / app-рд╡рд░реНрдЧреАрдХреГрдд рдореЗрдВ рд░рд╣рддрд╛ рд╣реИред<HeaderBoard />

рд╣рдордиреЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдПрдХ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХ-рдПрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рд╕реЗ рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдорд╕реНрдерд╛рди рдПрд╕ рдХреЗ рддрд╣рдд рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ import * as S from тАШ./styledтАЩ:ред рддрджрдиреБрд╕рд╛рд░, "рдПрд╕" рдПрдХ рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдХреА рдХреБрдВрдЬреА рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХреЗ рдирд╛рдо рд╣реИрдВ, рдФрд░ рдорд╛рди рд╕реНрд╡рдпрдВ рдШрдЯрдХ рд╣реИрдВред

 return (
   <HeaderWrapper>
     <Logo />
     {isMobile && <S.Arrow />}
     <S.Wraper isMobile={isMobile}>
       <Video src={bgVideo} />
       {!isMobile && <Header>{headerContent}</Header>}
       <S.WaveWrapper />
     </S.Wraper>
     {isMobile && <S.MobileHeader>{headerContent}</S.MobileHeader>}
     <Info link={link} />
     <PaintingInfo isMobile={isMobile} />
     {isMobile ? <CardsMobile /> : <CardsDesktop />}
     {isMobile ? <UserNavigation /> : <UserInfoModal />}
   </HeaderWrapper>
 )

рдпрд╣рд╛рдВ isMobile, рдпрд╣ рдШрдЯрдХ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдШрдЯрдХ рдЦреБрдж рддрдп рдХрд░реЗрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИред

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

рдЖрдЗрдП рдЕрдм "рдпреВрд▓рд┐рдпрди" рдШрдЯрдХреЛрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдХрд░реЗрдВ рдФрд░ рдЗрди рджреЛ рдШрдЯрдХреЛрдВ рдкрд░ рдПрдХ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

  • <ComponentA />- рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рдореЛрдмрд╛рдЗрд▓ рд▓реЙрдЬрд┐рдХ рдХреЗ рд╕рдЦреНрдд рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рд╛рдеред
  • <ComponentB />- рд╕рдВрдпреБрдХреНрддред

<ComponentA /> рдмрдирд╛рдо <ComponentB />


рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рд░реВрдЯ index.ts рдлрд╝рд╛рдЗрд▓ :

./ComponentA
- ComponentA.tsx
- ComponentADesktop.tsx
- ComponentAMobile.tsx
- index.ts
- styled.desktop.ts
- styled.mobile.ts


import ComponentA  from './ComponentA'
import ComponentAMobile  from './ComponentAMobile'
import ComponentADesktop  from './ComponentADesktop'

export default {
 ComponentACombined: ComponentA,
 ComponentAMobile,
 ComponentADesktop
}

рдирдИ рддрдХрдиреАрдХ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рд╡реЗрдмрдкреИрдХ (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдЕрдкреНрд░рдпреБрдХреНрдд рдореЙрдбреНрдпреВрд▓ ( ComponentADesktop, ComponentACombined) рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ , рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд░реВрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рдкреБрди: рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде:

import ComponentA from тАШ@youla/uiтАЩ
<ComponentA.ComponentAMobile />

рдЕрдВрддрд┐рдо рдмрдВрдбрд▓ рдореЗрдВ рдХреЗрд╡рд▓ ./ComponentAMobile рдлрд╝рд╛рдЗрд▓ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИред

рдШрдЯрдХ <ComponentA />рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП React.LazyрдШрдЯрдХ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЖрдпрд╛рдд рд╢рд╛рдорд┐рд▓ рд╣реИрдВ <ComponentAMobile /> || <ComponentADesktop />ред

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

import React from 'react'

const ComponentADesktopLazy = React.lazy(() => import('./ComponentADesktop'))
const ComponentAMobileLazy = React.lazy(() => import('./ComponentAMobile'))

const ComponentA = (props) => {
 const { isMobile } = props

//    

 return (
   <React.Suspense fallback={props.fallback}>
     {isMobile ? (
       <ComponentAMobileLazy {...props} />
     ) : (
       <ComponentADesktopLazy {...props} />
     )}
   </React.Suspense>
 )
}

export default ComponentA

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШрдЯрдХ <ComponentADesktop />рдореЗрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рдШрдЯрдХреЛрдВ рдХрд╛ рдЖрдпрд╛рдд рд╢рд╛рдорд┐рд▓ рд╣реИ:

import React from 'react'

import { DesktopList, UserAuthDesktop, UserInfo } from '@youla/ui'

import Banner from '../Banner'

import * as S from './styled.desktop'

const ComponentADesktop = (props) => {
 const { user, items } = props

 return (
   <S.Wrapper>
     <S.Main>
       <Banner />
       <DesktopList items={items} />
     </S.Main>
     <S.SideBar>
       <UserAuthDesktop user={user} />
       <UserInfo user={user} />
     </S.SideBar>
   </S.Wrapper>
 )
}

export default ComponentADesktop

рдПрдХ рдШрдЯрдХ <ComponentAMobile />рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдЖрдпрд╛рдд рд╣реЛрддрд╛ рд╣реИ:

import React from 'react'

import { MobileList, MobileTabs, UserAuthMobile } from '@youla/ui'

import * as S from './styled.mobile'

const ComponentAMobile = (props) => {
 const { user, items, tabs } = props

 return (
   <S.Wrapper>
     <S.Main>
       <UserAuthMobile user={user} />
       <MobileList items={items} />
       <MobileTabs tabs={tabs} />
     </S.Main>
   </S.Wrapper>
 )
}

export default ComponentAMobile

рдШрдЯрдХ <ComponentA />рдЕрдиреБрдХреВрд▓реА рд╣реИ: рдзреНрд╡рдЬ рджреНрд╡рд╛рд░рд╛ рдпрд╣ isMobileрддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЦреАрдВрдЪрдирд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдореЛрдмрд╛рдЗрд▓ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЗрдП рдЕрдм рдШрдЯрдХ рдХреЛ рджреЗрдЦреЗрдВ <ComponentB />ред рдЗрд╕рдореЗрдВ, рд╣рдо рдореЛрдмрд╛рдЗрд▓ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд▓реЙрдЬрд┐рдХ рдХрд╛ рдЧрд╣рд░рд╛ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рд╕рднреА рд╢рд░реНрддреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред рдЗрд╕реА рддрд░рд╣, рд╣рдо рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

рдпрд╣рд╛рдБ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рд░реВрдЯ index.ts рдлрд╝рд╛рдЗрд▓ рдмрд╕ рдлрд┐рд░ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд ./ComponentB:

./ComponentB
- ComponentB.tsx
- index.ts
- styled.ts


export { default } from './ComponentB'

рдШрдЯрдХ рдХреЗ рд╕рд╛рде ./ComponentB рдлрд╝рд╛рдЗрд▓:


import React from 'react'

import {
 DesktopList,
 UserAuthDesktop,
 UserInfo,
 MobileList,
 MobileTabs,
 UserAuthMobile
} from '@youla/ui'

import * as S from './styled'

const ComponentB = (props) => {
 const { user, items, tabs, isMobile } = props

 if (isMobile) {
   return (
     <S.Wrapper isMobile={isMobile}>
       <S.Main isMobile={isMobile}>
         <UserAuthMobile user={user} />
         <MobileList items={items} />
         <MobileTabs tabs={tabs} />
       </S.Main>
     </S.Wrapper>
   )
 }

 return (
   <S.Wrapper>
     <S.Main>
       <Banner />
       <DesktopList items={items} />
     </S.Main>
     <S.SideBar>
       <UserAuthDesktop user={user} />
       <UserInfo user={user} />
     </S.SideBar>
   </S.Wrapper>
 )
}

export default ComponentB

рдЖрдЗрдП рдЗрди рдШрдЯрдХреЛрдВ рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред



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

@Youla рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░рд╛ рдЕрдиреБрднрд╡


рд╣рдо рдЕрдкрдиреЗ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп @ youla / ui рдореЗрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рдорд┐рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдФрд░ рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред рдЗрди рдШрдЯрдХреЛрдВ рдХрд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рдпрдерд╛рд╕рдВрднрд╡ рд▓рдВрдмрд╛ рд╣реИ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдпрдерд╛рд╕рдВрднрд╡ рдкрддрд▓рд╛ рдФрд░ рд╣рд▓реНрдХрд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдиреЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИрдВ ред

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

рдпрд╣рд╛рдВ рд╣рдо рдХрд╛рд░рдг рд╕рдВрдЦреНрдпрд╛ рджреЛ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдЬреЛ рдЬрд▓реНрдж рд╣реА рдмрди рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрди рдЧрдпрд╛ рд╣реИ, рдмрдбрд╝реЗ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ред рдХрдИ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВ: рд╣рд╛рдБ, рд╣рдо рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ ред

V8 рдЬреИрд╕реЗ рдЖрдзреБрдирд┐рдХ рдЗрдВрдЬрди рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдпрд╣ рдмрд╣реБрдд рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдбреА рдУрд╕реНрдорд╛рдиреА рдХрд╛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд▓реЗрдЦ рд╣реИ: https://v8.dev/blog/cost-of-javasn-2019 ред : рдЖрдк рд╡реА 8 рдмреНрд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ https://twitter.com/v8js ред

рдпрд╣ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреА рдЕрд╡рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрдВрдЧреЗ, рдпрд╣ рдХрдордЬреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд╛рд▓реЗ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ ред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреИрдХреЗрдЬ @ youla-web / app- * рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдЕрдзрд┐рдХ "рд╡реНрдпрд╡рд╕рд╛рдп-рдЙрдиреНрдореБрдЦ" рд╣реИред рдФрд░ рдЧрддрд┐ / рд╕рд╛рджрдЧреА / рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрдгрдп рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рд╕реНрд╡рдпрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд╣реА рдорд╛рдирддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЫреЛрдЯреЗ рдПрдорд╡реАрдкреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдкрд╣рд▓реЗ рдПрдХ рд╕рд░рд▓ рдФрд░ рддреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг (<ComponentB />) рд▓рд┐рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдРрд╕реЗ рдШрдЯрдХ рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдзреЗ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХ рдХреЛрдб - рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВред

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

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

рдирд┐рд╖реНрдХрд░реНрд╖


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред рд╣рдордиреЗ рдЕрдиреБрдХреВрд▓реА / рдЙрддреНрддрд░рджрд╛рдпреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рд╕рдордЭрд╛, рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЗ рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓рддрд╛ рдФрд░ рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреА рдкрд╣рдЪрд╛рди рдХреАред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдмрд╣реБрдд рдХреБрдЫ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рдерд╛, рд▓реЗрдХрд┐рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрд╛ рд╣реИред рдЕрдЧрд▓реА рдмрд╛рд░ рд╣рдо рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ, рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ, рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

All Articles