рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЕрдиреБрдХреВрд▓реА рдШрдЯрдХреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд╕рдордЭреЗрдВрдЧреЗ, рдХреЛрдб-рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЙрдирдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдПрдХ рдЪреБрдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ (рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИ)редрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╢рдмреНрджрд╛рд╡рд▓реА рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред рд╣рдо рдЕрдХреНрд╕рд░ рд╢рдмреНрджреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓реА рдФрд░ рдЙрддреНрддрд░рджрд╛рдпреА рд╕реБрдирддреЗ рд╣реИрдВ ред рдЙрдирдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рд╣рдорд╛рд░реЗ рдШрдЯрдХреЛрдВ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ?рдЕрдиреБрдХреВрд▓реА (рдЕрдиреБрдХреВрд▓реА) рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рджреГрд╢реНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдПрдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЙрддреНрддрд░рджрд╛рдпреА (рдЙрддреНрддрд░рджрд╛рдпреА) рдПрдХ рдПрдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓ рд╣реИредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдиреБрдХреВрд▓реА рдФрд░ рдЙрддреНрддрд░рджрд╛рдпреА рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдзреБрдВрдзрд▓рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╛рдпрдм рди рд╣реЛ рдЬрд╛рдПредрд▓реЗрдЖрдЙрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рдбрд┐рдЬрд╛рдЗрдирд░, рд╕рд╛рде рд╣реА рд╕рд╛рде рдбреЗрд╡рд▓рдкрд░реНрд╕, рдЕрдХреНрд╕рд░ рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрдХреВрд▓реА рдФрд░ рдЙрддреНрддрд░рджрд╛рдпреА рддрд░реНрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдРрд╕реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рдирдореЗрдВ рдЕрдиреБрдХреВрд▓реА рдФрд░ рдЙрддреНрддрд░рджрд╛рдпреА рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдмрд╕ рдЕрдиреБрдХреВрд▓реА ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╢рдмреНрдж "рдЙрддреНрддрд░рджрд╛рдпреА" рд╕реЗ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рд╣реИ рдпрд╛, рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, "рдЙрддреНрддрд░рджрд╛рдпреА"ред рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдореБрдЭреЗ рдпрд╣ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧрддреА рд╣реИредрдореИрдВ рдбрд┐рд╕реНрдкреНрд▓реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рджреЛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ - рдореЛрдмрд╛рдЗрд▓ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдкред рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╕реЗ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рдЪреМрдбрд╝рд╛рдИ рд╕реЗ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,ред 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>
)
}
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЕрдиреБрдХреВрд▓реА рдШрдЯрдХ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рд╕реАрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ "рдЧрддрд┐рд╢реАрд▓рддрд╛" рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдореИрдВ рдХреБрдЫ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВредрд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг
рдЖрдк рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдЖрдЗрдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЬрд╛рдПрдВредрд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рд╕реАрдорд╛ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдореЛрдмрд╛рдЗрд▓ рдпрд╛ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:- рд╕реАрдорд╛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╖рдп рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ (рдпрджрд┐ рдЖрдкрдХрд╛ рд╕реАрдПрд╕рдПрд╕ рд╕рдорд╛рдзрд╛рди рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ)ред рдорд╛рди рд╕реНрд╡рдпрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдбрд┐рдЬрд╛рдЗрдирд░ рдЖрдкрдХреЗ UI рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдкрд╛рддреЗ рд╣реИрдВ ред
- рд╣рдо рдПрдХ redux / mobx / рд╕рдВрджрд░реНрдн / рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВ ред рдХрд╣реАрдВ рднреА, рдпрджрд┐ рдХреЗрд╡рд▓ рдШрдЯрдХ рдФрд░, рдЕрдзрд┐рдорд╛рдирддрдГ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХреА рдЗрд╕ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдереАред
- рд╣рдо рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рдИрд╡реЗрдВрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреЗ рдорд╛рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдШрдЯрдХ рдЯреНрд░реА рдХреЗ рдЕрдкрдбреЗрдЯ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред
- рд╣рдо рд╕рд░рд▓ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрдХреНрд░реАрди рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (
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 />) рд▓рд┐рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдРрд╕реЗ рдШрдЯрдХ рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдзреЗ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХ рдХреЛрдб - рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВредрд╕реБрд╡рд┐рдзрд╛ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдШрдЯрдХ рдХреЛ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рдЙрддреНрдкрд╛рджрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛редрдореИрдВ рдЖрдкрдХреЛ рдШрдЯрдХ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рднреА рджреЗрддрд╛ рд╣реВрдВред рдпрджрд┐ рдореЛрдмрд╛рдЗрд▓ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдпреВрдЖрдИ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рд░рдЦрддреЗ рд╣реБрдПред рдпрд╣ рдЖрдкрдХреЛ рдЬрдЯрд┐рд▓ рд╕реАрдПрд╕рдПрд╕ рд▓рд┐рдЦрддреЗ рд╕рдордп рджрд░реНрдж рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд┐рдВрдЧ рдпрд╛ рджреВрд╕рд░реЗ рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рдХрд┐рд╕реА рдПрдХ рдбрд┐рд╕реНрдкреНрд▓реЗ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ред рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдЧрд░ рдпреВрдЖрдИ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░реАрдм рд╣реИ, рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХреНрдпреЛрдВ рдХрд░реЗрдВ?рдирд┐рд╖реНрдХрд░реНрд╖
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред рд╣рдордиреЗ рдЕрдиреБрдХреВрд▓реА / рдЙрддреНрддрд░рджрд╛рдпреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рд╕рдордЭрд╛, рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЗ рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓рддрд╛ рдФрд░ рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреА рдкрд╣рдЪрд╛рди рдХреАред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдмрд╣реБрдд рдХреБрдЫ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рдерд╛, рд▓реЗрдХрд┐рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрд╛ рд╣реИред рдЕрдЧрд▓реА рдмрд╛рд░ рд╣рдо рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ, рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ, рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред