рдирдорд╕реНрддреЗ,
рд╣рдмреНрдмреЛрд░реНрд╡рдЪрди! рдбрд┐рдЬрд╛рдЗрдирд░ рд╡реИрдЪрд╛рд░рд┐рдХ рд▓реЛрдЧ рд╣реИрдВ, рдФрд░ рдЧреНрд░рд╛рд╣рдХ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдирдХреА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рдеред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ UIkit рдХреЛ рдЕрдкрдиреЗ% JS рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ% рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рд╣реИред рдЕрдм рдЖрдк рдХреЙрдлреА рдкреА рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреЗрдЬ рдкрд░ рдШрдЯрдХреЛрдВ рдХреЛ рдлреЗрдВрдХрдХрд░ рд╕рднреА рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░, рдЕрдЧрд░ рдЖрдкрдХреЛ рдПрдирдкреАрдПрдо рдЦреБрд▓реЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░
рдХреВрдбрд╝реЗ рдХреЗ рдвреЗрд░ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдпреВрдЖрдИрдХрд┐рдЯ рдорд┐рд▓реЗ рдФрд░ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдпреВрдПрдХреНрд╕ / рдпреВрдЖрдИ рдФрд░ рдЗрд╕рдХреА рдЬрд░реВрд░рддреЛрдВ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рдЦреВрдм!
рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ... рдореИрдВ рдХреМрди рдордЬрд╛рдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ? рдЖрдкрдХреА рдЦреБрд╢реА рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рдЬрдм рдбрд┐рдЬрд╛рдЗрдирд░ рдЕрдЧрд▓реЗ рдкреГрд╖реНрда рдпрд╛ "рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рдпреЛрдЬрдирд╛" рдХреЗ рд▓рд┐рдП рдирдП UI рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдЯреИрд▓реНрдордб рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдХреБрдЫ рднреА рдЧрд▓рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдбреЗрд╡рд▓рдкрд░ рдХреЛ
"DRY рдпрд╛ DRY" рд╕рд╡рд╛рд▓ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдореБрдЭреЗ рдХрд┐рд╕реА рддрд░рд╣ рдореМрдЬреВрджрд╛ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╣рд╛рдВ, рддрд╛рдХрд┐ рдореМрдЬреВрджрд╛ рдорд╛рдорд▓реЛрдВ рдкрд░ рдкреНрд░рддрд┐рдЧрдорди рдореЗрдВ рджреЗрд░реА рди рд╣реЛред рдпрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ "рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВ" рдФрд░ рдЦрд░реЛрдВрдЪ рд╕реЗ рдирдП рдШрдЯрдХ рд▓рд┐рдЦреЗрдВред рдЙрд╕реА рд╕рдордп, UIkit рдХреЛ рдлреБрд▓рд╛рдпрд╛ рдФрд░ рд╕рдорд░реНрдерди рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдпрд╛ред
рдпрджрд┐ рдЖрдк, рдЬреИрд╕реЗ рдХрдИ, рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рджреЗрдЦреЗрдВ!
рд╡реНрдпрд╛рдкрдХ рдкрд░рд┐рдЪрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдореБрдЭреЗ рд╣реИрдмреЗ рдкрд░
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕реВрддреНрд░ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдпрд╛ред рд╡рд╣рд╛рдБ, рд▓реЛрдЧреЛрдВ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЫрд┐рдбрд╝рдХрд╛рд╡ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдкрд░ рдмрдЯрди рдШрдЯрдХ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЦреИрд░, рдЬрдм рдореИрдВрдиреЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдХреБрдЫ рдРрд╕реЗ рд╣реЛрд▓реАрд╡рд╛рд▓реЛрдВ рдХреЛ рджреЗрдЦрд╛, рддреЛ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рдХреЛ рдмрд▓ рдорд┐рд▓рд╛ред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреМрди рд╕реЗ "рдЕрдиреБрдХреВрд▓рди" рдШрдЯрдХ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╢реИрд▓рд┐рдпреЛрдВ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдШрдЯрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рд╣реИред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЧреНрд░реЗ рдмрдЯрди рд╣реИ, рд▓реЗрдХрд┐рди рдиреАрд▓реЗ рд░рдВрдЧ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╛ рдЧреЛрд▓ рдХреЛрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдмрдЯрди рдФрд░ рдЕрдЪрд╛рдирдХ рдЙрдиреНрд╣реЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝реЗ рдЧрдП рд╣реЛрд▓реАрд╡рд╛рд░реНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 3 рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ:
1. рд╡реИрд╢реНрд╡рд┐рдХ рд╢реИрд▓рд┐рдпреЛрдВ
рд╡реИрд╢реНрд╡рд┐рдХ рд╕реАрдПрд╕рдПрд╕ рд╢реИрд▓рд┐рдпреЛрдВ рдХреА
рдкреВрд░реА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ,
рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреНрд╡рд╛рд░рд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд
! рдорд╣рддреНрд╡рдкреВрд░реНрдг , рддрд╛рдХрд┐ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░, рдореВрд▓ рдШрдЯрдХ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдирд┐рд░реНрдгрдп, рдЗрд╕реЗ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдФрд░ рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдХрд┐рд╕реА рднреА рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рд╕рдЦреНрдд рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИред рдЬрдм рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдЖрдкрдХреЗ рдШрдЯрдХреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
2. рдореВрд▓ рд╕рдВрджрд░реНрдн рд╕реЗ рдХрдХреНрд╖рд╛рдПрдВ (рд╢реИрд▓реА) рдкрд╛рд╕ рдХрд░рдирд╛
рдПрдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдирд┐рд░реНрдгрдп рднреАред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖
рдкреНрд░реЛрдк рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ
рдХрдХреНрд╖рд╛рдПрдВ рдХрд╣реЗрдВрдЧреЗ рдФрд░ рдареАрдХ рдКрдкрд░ рд╣рдо рдШрдЯрдХ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╡рд┐рд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред
<Button classes="btn-red btn-rounded" />
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдРрд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рдШрдЯрдХ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдШрдЯрдХ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ HTML рддрддреНрд╡реЛрдВ рдХреА рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рддреЛ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдЧрд╛ред рддреЛ, рдЙрдиреНрд╣реЗрдВ рдШрдЯрдХ рдХреЗ рдореВрд▓ рддрддреНрд╡ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд┐рд░, рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╡реЗ рдХрд┐рд╕реА рддрд░рд╣ рдЖрдЧреЗ рдлреИрд▓ рдЬрд╛рдПрдВрдЧреЗред рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИред
3. рдкреНрд░реЙрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдШрдЯрдХ рд╕реЗрдЯ рдХрд░рдирд╛
рдпрд╣ рд╕рдмрд╕реЗ рд╕рдордЭрджрд╛рд░ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рдмрд╕реЗ рдХрдо рд▓рдЪреАрд▓рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдШрдЯрдХ рдХрд╛ рд▓реЗрдЦрдХ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рддрд┐рднрд╛ рд╣реИ рдФрд░ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╕реЛрдЪрд╛ рдерд╛ред рдпрд╣реА рд╣реИ, рд╣рдо рд╕рднреА рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рд╕рднреА рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рд╣рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
<Button bgColor="red" rounded={true} />
рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд╣реБрд╣ рдзреНрд╡рдирд┐? рд╢рд╛рдпрджред
рд╡реНрдпрд╡рд╣рд╛рд░

рдпрд╣рд╛рдБ рдпрд╣ рдЕрднреА рднреА рдЕрдзрд┐рдХ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдШрдЯрдХ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рдХрд╛рд░реНрдп рд╕реЗ рдЖрддреА рд╣реИрдВред рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдШрдЯрдХ рдФрд░ рдЙрд╕рдореЗрдВ рддрд░реНрдХ, рдФрд░ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкрд░рд┐рд╡рд░реНрддрди рд╣рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрддрдирд╛ рд╣реА рдХрдард┐рди рд╣реИ рдЙрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдХрд░рдирд╛ред рдХрд┐рд╕реА рддрд░рд╣ рдХреА рддрдирд╛рддрдиреА рд╕рд╛рдордиреЗ рдЖрдИ ... рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдк рд╕рдордЭреЗ! ;-)
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣рд╛рдВ рднреА, рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдпрд╛ рддреЛ рдШрдЯрдХ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЪреВрдВрдХрд┐ рд╣рдо рдШрдЯрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реВрдВрдЧрд╛:
1. рд╕рд╣рд╛рд░рд╛ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рдо
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕ рд╕реЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдШрдЯрдХ рдкреНрд░реЙрдкрд░ рд╕реЗрдЯ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЖрдЧреЗ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдо рдШрдЯрдХ рдореЗрдВ рдХреБрдЫ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╣рдореЗрдВ рдореВрд▓ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХрд╛рдЯрдХрд░ рдореВрд▓ рдШрдЯрдХ рдХреЛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд░рдЦрддреЗ рд╣реБрдПред
рдлреНрд▓рд┐рдк рдкрдХреНрд╖ рд╡рд╣ рд╣реИ рдЬрдм рд╣рдо рдШрдЯрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рддрд░рд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдкрд░ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рддрдп рдХрд░рдирд╛ред
2. рдЯреНрд░реИрдХрд┐рдВрдЧ рдШрдЯрдХ рдЬреАрд╡рди рдЪрдХреНрд░ рдФрд░ рдШрдЯрдирд╛рдУрдВ
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд┐рддрд╛рдм рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИред
рдореЗрд░рд╛ рддрд╛рддреНрдкрд░реНрдп рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдФрд░ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рд╕реЗ рдирд╣реАрдВ рд╣реИред рдШрдЯрдХ рдХреЛ рдЗрд╕рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдкреНрд░реЙрдкрд░ рдФрд░ / рдпрд╛ рддрд░реАрдХреЗ рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд░рд╛рдЬреНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ "рдкрддрд╛ рд▓рдЧрд╛рдиреЗ" рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред
3. рдЗрдВрдкреАрд░рд┐рдпрд▓ рдореИрдиреЗрдЬрдореЗрдВрдЯ
рд╣рдо рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдпрд╛ред рдФрд░ рдлрд┐рд░ рднреА, рдХрднреА-рдХрднреА, рдпрд╣ рдПрдХ рдШрдЯрдХ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ "рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдЦреАрдВрдЪреЗрдВ"ред рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдареАрдХ рд╣реИ, рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕реБрд▓рдЭрд╛ рд▓рд┐рдпрд╛ред рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рдорд╛рдорд▓рд╛
рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдПрдХ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдПрдХ рдмрдЯрди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрд▓реАрд╡рд░ рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реБрдЖред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд╣реЛрдЧрд╛ред рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдмрджрд▓рддреЗ рд░рдВрдЧ рдпрд╛ рдЧреЛрд▓ рдХреЛрдиреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдереЛрдбрд╝реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЗ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореВрд▓ рдмрдЯрди рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдШрдЯрдХ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдРрдк рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдЬреЗрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдЯрди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдмреБрдирд┐рдпрд╛рджреА, рд╕рдордЭрд╛рдпрд╛ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдпреВрдЖрдИ рдЧрд╛рдЗрдб рдФрд░ рдЙрд╕ рд╕рднреА рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд░реНрд╡рд░ (рд╕рдмрдорд┐рдЯ рдмрдЯрди) рдХреЗ рд▓рд┐рдП рд╕рдмрдорд┐рдЯ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдЯрдХ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╢реИрд▓реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рднреЗрдЬрдиреЗ рдХреА рдкреНрд░рдЧрддрд┐ рдХрд╛ рдПрдХ рдЪрд┐рддреНрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдПрдХ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ - рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдпрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд╣реАрдВред
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдзрд╛рд░ рдмрдЯрди рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рд╣реИ, рдФрд░ рджрд╛рдИрдВ рдУрд░ рд╕рдмрдорд┐рдЯ рдмрдЯрди рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рдлрд▓ рд╕рдорд╛рдкрди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рдЦреИрд░, рдЕрдЧрд░ рдорд╛рдорд▓рд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░реЗрдВ!
рдирд┐рд░реНрдгрдп
рдореИрдВ рдЕрднреА рднреА рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдХреЗ рдлреИрд╕рд▓реЗ рдореЗрдВ рд╣реЛрд▓реАрд╡рд░ рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреА рдХрд┐рд╕реНрдордд рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░реВрдВрдЧрд╛ -
SvelteJS -
рдПрдХ рдирдИ рдкреАрдврд╝реА рдЧрд╛рдпрдм рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд░реВрдкрд░реЗрдЦрд╛ рдЬреЛ
рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рд╣реА
рд╣реИ ред
рд╣рдо рддреБрд░рдВрдд рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ, рд╣рдордиреЗ рдЖрдзрд╛рд░ рдмрдЯрди рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рдХрд╛ рдХреЛрдб рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдзрд╛рд░ рдмрдЯрди рдХрд╛ рдШрдЯрдХ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
Button.html <button {type} {name} {value} {disabled} {autofocus} on:click > <slot></slot> </button> <script> export default { data() { return { type: 'button', disabled: false, autofocus: false, value: '', name: '' }; } }; </script> <style> </style>
рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛:
<Button on:click="cancel()">Cancel</Button>
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдмрдЯрди рдШрдЯрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдмреБрдирд┐рдпрд╛рджреА рд╣реИред рдЗрд╕рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдХреЛрдИ рд╕рд╣рд╛рдпрдХ рддрддреНрд╡ рдпрд╛ рдкреНрд░реЙрдк рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдШрдЯрдХ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдШрдЯрдХ рдкреНрд░реЙрдкреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЕрдиреБрдХреВрд▓рди, рдФрд░ рд╕рднреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╛рд╣рд░ рд░рд┐рд╕рд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕ рдШрдЯрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдФрд░ рдмрдирд╛рдирд╛, рдмрдврд╝реА рд╣реБрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛, рдПрдХ рдЖрд╕рд╛рди рдХрд╛рдо рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рддрдм рдирд╣реАрдВ рдЬрдм рдЖрдк
Svelte рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдмрдорд┐рдЯ рдмрдЯрди рдХреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдлреНрд░реЗрдо рдФрд░ рдмрдЯрди рдкрд╛рда рд╣рд░рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣реЛрд╡рд░ рдкрд░, рдкреГрд╖реНрдарднреВрдорд┐ рднреА рдЧрд╣рд░реЗ рднреВрд░реЗ рд░рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рд╣рд░реЗ рд░рдВрдЧ рдХреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
- рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдПрдХ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдЧреЛрд▓ рдкреНрд░рдЧрддрд┐ рд╕рдВрдХреЗрддрдХ рдореЗрдВ "рд╕реНрд▓реИрдо" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ (рдЬреЛ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ), рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдмрдЯрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдлрд▓ (рд╕рдлрд▓рддрд╛) рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╕рдлрд▓ (рддреНрд░реБрдЯрд┐) рдирд╣реАрдВред рдЙрд╕реА рд╕рдордп, рд╕рдВрдХреЗрддрдХ рд╕реЗ рдмрдЯрди рдпрд╛ рддреЛ рдПрдХ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдмреИрдЬ рдХреЗ рд╕рд╛рде рдПрдХ рдбрд╛рд╡, рдпрд╛ рд▓рд╛рд▓ рдмреИрдЬ рдХреЛ рдХреНрд░реЙрд╕ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдпрд╣ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕рдВрдмрдВрдзрд┐рдд рдмреИрдЬ рдлрд┐рд░ рд╕реЗ рдЕрдкрдиреА рдореВрд▓ рд╕реНрдерд┐рддрд┐ (рдирд┐рд╖реНрдХреНрд░рд┐рдп) рдореЗрдВ рдПрдХ рдмрдЯрди рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред
- рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдмреЗрд╕ рдмрдЯрди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдпрд╣ рд╕рдм рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдФрд░ рд╕рднреА рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдХрд░ред
рдлреВрд╣, рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рдкрд╣рд▓реЗ рдПрдХ рдирдпрд╛ рдШрдЯрдХ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдЖрдзрд╛рд░ рдмрдЯрди рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯреЗрдВ:
SubmitButton.html <Button> <slot></slot> </Button> <script> import Button from './Button.html'; export default { components: { Button } }; </script>
рдЬрдмрдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╣реА рдмрдЯрди рд╣реИ, рдХреЗрд╡рд▓ рдмрджрддрд░ рд╣реИ - рдпрд╣ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдкреНрд░реЙрдкрд░ рдкреНрд░реЙрдХреНрд╕реА рдХреИрд╕реЗ рдХрд░реЗрдВред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдкрд░ рд▓реМрдЯ рдЖрдПрдВрдЧреЗред
рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ
рдЗрд╕ рдмреАрдЪ, рдЖрдЗрдП рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдирдП рдмрдЯрди рдХреЛ рдХреИрд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдХрд╛рд░реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд░рдВрдЧ рдмрджрд▓реЗрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рд╕реА рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЪреВрдВрдХрд┐ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдПрдХ рдмрдЯрди рдХреЗ рдЕрдВрджрд░ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡реИрд╢реНрд╡рд┐рдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЕрдВрджрд░ рдХреА рд╢реИрд▓реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рднреА рдЕрд╕рдВрднрд╡ рд╣реИ - рдореВрд▓ рдмрдЯрди рд╕рд┐рд░реНрдл рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА рдкреНрд░реЙрдкреНрд╕ рдХреА рдорджрдж рд╕реЗ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рдирдП рдмрдЯрди рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреА рдЧрдИ рд╕рднреА рд╢реИрд▓рд┐рдпрд╛рдВ рднреА рдЗрд╕ рдмрдЯрди рдХреЗ рдЕрдВрджрд░ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рд╣реЛрдВ рдФрд░ рд▓реАрдХ рд╕реЗ рд╣рдЯрдХрд░ рди рд╣реЛрдВред
рд╕рдорд╛рдзрд╛рди рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
Svelte рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рддреЛ, рдмрд╕ рдирдП рдмрдЯрди рдХреЗ рд▓рд┐рдП рд╢реИрд▓рд┐рдпрд╛рдБ рд▓рд┐рдЦреЗрдВ:
<div class="submit"> <Button> <slot></slot> </Button> </div> ... <style> .submit :global(button) { border: 2px solid #1ECD97; color: #1ECD97; } .submit :global(button:hover) { background-color: #1ECD97; color: #fff; } </style>
Svelte рдХреА
рдХреБрдВрдЬреА рдореЗрдВ рд╕реЗ рдПрдХ - рд╕рд░рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╕ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╢реЛрдзрдХ
: рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ
рд╡реИрд╢реНрд╡рд┐рдХ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕ рдШрдЯрдХ рдореЗрдВ рдореМрдЬреВрдж
рд╕рдмрдорд┐рдЯ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдмрдЯрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
рднрд▓реЗ рд╣реА рдЖрд╡реЗрджрди рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рдЕрдЪрд╛рдирдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛ рдорд╛рд░реНрдХрдЕрдк рджрд┐рдЦрд╛рдИ рджреЗ:
<div class="submit"> <button>Button</button> </div>
рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ "рд▓реАрдХ" рд╡рд╣рд╛рдБ
SubmitButton рдШрдЯрдХ рд╕реЗ рд╢реИрд▓рд┐рдпрд╛рдБред
рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП,
Svelte рдиреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рдШрдЯрдХреЛрдВ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рджреЛрдиреЛрдВ рдШрдЯрдХреЛрдВ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рдкреНрд░реЙрдкрд░ рдлреЗрдВрдХрддреЗ рд╣реИрдВ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ
рдареАрдХ рд╣реИ, рд╣рдо рд╕реНрдЯрд╛рдЗрд▓ рдХреЛ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╣рд╛рд░рд╛ рдХреЗ рдФрд░ рд╕реАрдзреЗ рд╕реАрдПрд╕рдПрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред рдЕрдм рдЖрдкрдХреЛ рдирдП рдШрдЯрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдмрдЯрди рдШрдЯрдХ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рддрдп рдХрд░реЗрдВ рдХрд┐ рдирдП рдШрдЯрдХ рдореЗрдВ рдХреМрди рд╕реЗ рдЧреБрдг рд╣реЛрдВрдЧреЗред
рдХрд╛рд░реНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП,
SubmitButton рдХреЛ рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА рдПрдХ рд╕рдлрд▓ / рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕реНрд╡рдд: рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджреЗрд░реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
<script> ... export default { ... data() { return { delay: 1500, status: 'idle' </script>
рддреЛ, рд╣рдорд╛рд░реЗ рдирдП рдмрдЯрди рдореЗрдВ 4 рд░рд╛рдЬреНрдп рд╣реЛрдВрдЧреЗ: рдмрд╛рдХреА, рдбрд╛рдЙрдирд▓реЛрдб, рд╕рдлрд▓рддрд╛ рдпрд╛ рддреНрд░реБрдЯрд┐ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЕрдВрддрд┐рдо 2 рд░рд╛рдЬреНрдп 1.5 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдВрдЧреЗред
рдЖрджреЗрд╢ рдореЗрдВ рд╕рднреА рд╕рдВрдЪрд░рд┐рдд рдкреНрд░реЙрдкреНрд╕ рдХреЛ
рдмрдЯрди рдШрдЯрдХ рдореЗрдВ рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ
рд╕реНрдерд┐рддрд┐ рдФрд░
рджреЗрд░реА рдХреЛ рдХрд╛рдЯ рджреЗрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдорд╛рдиреНрдп рд╣реИрдВ, рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рд▓рд┐рдЦреЗрдВрдЧреЗред рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдХреЗрд╡рд▓
рдлреИрд▓рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ рдХреЛ рд╢реЗрд╖ рдШрдЯрдХ рдкрд░ "рд╕реНрдорд┐рдпрд░" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдкреНрд░рд╕рд╛рд░ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
рд╣реИрдВ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рд╣рдо рдмрд┐рд▓реНтАНрдХреБрд▓ рд╕рдмрдорд┐рдЯ рдмрдЯрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдмрдЯрди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЗрд╕реЗ рдмрд╛рд╣рд░ рд╕реЗ рди рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХреЗ:
<div class="submit"> <Button {...attrs} type="submit"> <slot></slot> </Button> </div> <script> ... export default { ... computed: { attrs: data => { const { delay, status, ...attrs } = data; return attrs; } }, }; </script>
рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдгред
рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛, рд╕рдВрд╢реЛрдзрд┐рдд рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдореВрд▓ рдмрдЯрди рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓рд╛ред рдирдпрд╛ рдмрдЯрди рд╡реНрдпрд╡рд╣рд╛рд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ
рд╣рдо рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЯреНрд░реИрдХ рдХрд░рддреЗ рд╣реИрдВ
рдЗрд╕рд▓рд┐рдП, рдЬрдм рдЖрдк
SubmitButton рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдИрд╡реЗрдВрдЯ рдХреЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдП
, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХреЗ (рдЬреИрд╕рд╛ рдХрд┐
рдмрдЯрди рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░реЗрдВ - рдбрд╛рдЙрдирд▓реЛрдб рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдЖрдзрд╛рд░ рдмрдЯрди рд╕реЗ рдШрдЯрдирд╛ рдХреЛ рдкрдХрдбрд╝реЛ, рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП рдЙрд╕реЗ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рднреЗрдЬреЗрдВ:
<div class="submit"> <Button {...attrs} type="submit" on:click="click(event)"> <slot></slot> </Button> </div> <script> ... export default { ... methods: { click(e) { this.set({ status: 'loading' }); this.fire('click', e); } }, }; </script>
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдмрдЯрди рдХрд╛ рдореВрд▓ рдШрдЯрдХ, рдЬреЛ рд╕реНрд╡рдпрдВ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рднреЗрдЬрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ (
рд╕рдлрд▓рддрд╛ / рддреНрд░реБрдЯрд┐ ) рд╕реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдмрдЯрди рдХреЛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд┐рддрд┐ рдХреЛ
рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдЬреАрд╡рди-рдЪрдХреНрд░ onupdate рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
<script> ... export default { ... onupdate({ current: { status, delay }, changed }) { if (changed.status && ['success', 'error'].includes(status)) { setTimeout(() => this.set({ status: 'idle' }), delay); } }, }; </script>
рдЫреВрдирд╛ рдЦрддреНрдо
2 рдФрд░ рдмрд┐рдВрджреБ рд╣реИрдВ рдЬреЛ рдХрд╛рд░реНрдп рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмрдЯрди рдХреЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдЪрд┐рдХрдиреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдпрд╛рдкрд▓рдЯ, рдЖрдкрдХреЛ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реА рдмрдЯрди рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рди рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рддрддреНрд╡ рдХреЛред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
: рд╡реИрд╢реНрд╡рд┐рдХ , рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдмрдЯрди рдХреЗ рдЕрдВрджрд░ рдорд╛рд░реНрдХрдЕрдк
рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЫрд┐рдкрд╛ рд╣реЛред
рдпрд╣ рдЕрд▓рдЧ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдмрдЯрди рдХреЗ рдЕрдВрджрд░ рдХрд╛ рдорд╛рд░реНрдХрдЕрдк рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдиреЛрдб рдмрдЯрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдзрд╛рд░ рдмрдЯрди рдХреЗ рдореВрд▓ рдШрдЯрдХ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдзрдордХреА рднрд░рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдорд╛рдзрд╛рди рдЖрджрд┐рдо рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ - рдЖрдкрдХреЛ рдмрд╕ рдирдП рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рд╕реНрд▓реЙрдЯ рдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрддреНрд╡ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдФрд░ рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<div class="submit"> <Button {...attrs} type="submit" on:click="click(event)"> <span><slot></slot></span> </Button> </div> ... <style> ... .submit span { transition: opacity 0.3s 0.1s; } .submit.loading span, .submit.success span, .submit.error span { opacity: 0; } ... </style>
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рдмрдЯрди рдкреГрд╖реНрда рд╕реЗ рдЫрд┐рдкрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЖрдХрд╛рд░, рднреЗрдЬрдиреЗ рдХреЗ рд╕рдордп рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЕрдЧрд░ рд╕рдмрдорд┐рдЯ рдмрдЯрди рдХреЛ рдкреНрд░реЙрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╛ рдпрджрд┐ рд╕реНрдерд┐рддрд┐
рдирд┐рд╖реНрдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдмрдЯрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рдЫреЛрдЯреА рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЛ
рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рдШрдЯрдХ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
<div class="submit"> <Button {...attrs} type="submit" disabled={isDisabled}> <span><slot></slot></span> </Button> </div> <script> ... export default { ... computed: { ... isDisabled: ({ status, disabled }) => disabled || status !== 'idle' }, }; </script>
рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореВрд▓ рдмрдЯрди рдореЗрдВ рдПрдХ рд╢реИрд▓реА рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЕрдХреНрд╖рдо рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд╛рд░рднрд╛рд╕реА рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рдмрдЯрди рдХреЗрд╡рд▓ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рднреА рдПрдХ рд╣реА рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ
: рд╡реИрд╢реНрд╡рд┐рдХ :
.submit.loading :global(button[disabled]), .submit.success :global(button[disabled]), .submit.error :global(button[disabled]) { opacity: 1; }
рд╡рд╣ рд╕рдм рд╣реИ! рдирдпрд╛ рдмрдЯрди рд╕реБрдВрджрд░ рдФрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ!

рдореИрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рдПрдирд┐рдореЗрд╢рди рдФрд░ рдЗрд╕ рд╕рдм рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╡рд░рдг рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рди рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕реАрдзреЗ рд▓реЗрдЦ рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рд▓рд┐рдП рднреА рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдбреЗрдореЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯрд░реНрдирдХреА рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдФрд░ рдмрд▓реНрдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдХрд╛рдо рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреЗрддрд╛ред рдпрд╛рдж рд░рдЦреЗрдВ, рдпрд╣ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдбреЗрдореЛ рд╣реИред
тЖТ
рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдбреЗрдореЛ рдФрд░ рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЛрдбрдпрджрд┐ рдЖрдкрдХреЛ рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛ рдФрд░ рдЖрдк
Svelte рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ,
рддреЛ рдЕрдиреНрдп
рд▓реЗрдЦ рдкрдврд╝реЗрдВ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
"рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд┐рдирд╛ GitHub рдкрд░ рдХреИрд╕реЗ рдЦреЛрдЬ рдХрд░реЗрдВ + RxJS 6 + рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ ред
" рдирдП рд╕рд╛рд▓ рдХреЗ рдкреЙрдбрдХрд╛рд╕реНрдЯ
RadioJS # 54 рдХреЛ рд╕реБрдиреЗрдВ, рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХреА рдХрд┐
рд╕реНрд╡реЗрд▓реНрдЯ рдХреНрдпрд╛
рд╣реИ , рдпрд╣ рдХреИрд╕реЗ "рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ" рдФрд░ рдпрд╣ "рдЕрднреА рддрдХ рдПрдХ рдФрд░ рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ" рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред
рд░реВрд╕реА рднрд╛рд╖рд╛ рдХрд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓
SvelteJS рджреЗрдЦреЗрдВ ред рд╡рд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдо рдореЗрдВ рд╕реЗ рджреЛ рд╕реМ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдЖрдкрдХреЛ рджреЗрдЦрдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреА!
рдкреА / рдПрд╕рдЕрдЪрд╛рдирдХ, UI рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдмрджрд▓ рдЧрдПред рдЕрдм рдЖрд╡реЗрджрди рдХреЗ рд╕рднреА рдмрдЯрди рдореЗрдВ рд▓реЗрдмрд▓ рдКрдкрд░реА рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдШрдЯрдирд╛рдУрдВ рдХреЗ рдРрд╕реЗ рдореЛрдбрд╝ рд╕реЗ рдбрд░рддреЗ рдирд╣реАрдВ рд╣реИрдВред
рдкрд╛рда-рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛрдбрд╝реЗрдВ
: рдЕрдкрд░рдХреЗрд╕; рдмреЗрд╕ рдмрдЯрди рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдФрд░ рдХреЙрдлреА рдкреАрдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред
рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!