рдпрд╣ #7249 рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд┐рднрд┐рдиреНрди рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рд░рд┐рдПрдХреНрдЯ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╡рд╣ рд╣рдореЗрд╢рд╛ HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред
<x-foo bar={baz}> // same as setAttribute('bar', baz)
рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдПрдХ рд╡рд╕реНрддреБ рдпрд╛ рд╕рд░рдгреА рд╣реИред рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ:
<x-foo bar="[object Object]">
рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ref
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
<x-foo ref={el => el.bar = baz}>
рдпрд╣ рд╕рдорд╛рдзрд╛рди рдереЛрдбрд╝рд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдЬ рднреЗрдЬреЗ рдЬрд╛ рд░рд╣реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреБрдг рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХреА рд╕рднреА рдЙрдЬрд╛рдЧрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдФрд░ рдЬреЛ рдХреЛрдИ рднреА рд╡реИрдирд┐рд▓рд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЛ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЙрд╕реЗ рднреА рдЗрд╕ рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдЙрдкрдпреЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреБрдгреЛрдВ рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд░рдирдЯрд╛рдЗрдо рд╕рдВрдЪрд╛рд░ рдХреЛ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреБрдЫ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдХреЛ рдХреИрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдХреЛрдИ рд╕рдВрдкрддреНрддрд┐ рдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрд╢рд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдкрд░ рдЧреБрдг рд╕реЗрдЯ рдХрд░ рд╕рдХрддреА рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░реЗрдЧреА рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдЙрджрд╛рд╣рд░рдг:
<x-foo bar={baz}>
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ .bar
рдХреА рд╕рдВрдкрддреНрддрд┐ x-foo
рддрддреНрд╡ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ baz
ред
CamelCased рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, React рдЙрд╕реА рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╣ рдЖрдЬ tabIndex
рдЬреИрд╕реА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред
<x-foo squidInk={pasta}> // sets .squidInk = pasta
рдпрд╣ рдореЙрдбрд▓ рд╕рд░рд▓, рд╕реНрдкрд╖реНрдЯ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдХреЗ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдХреЗрдВрджреНрд░рд┐рдд рдПрдкреАрдЖрдИ рдЯреВ рдбреЛрдо" рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
рдкреЙрд▓рд┐рдорд░ рдпрд╛ рд╕реНрдХреЗрдЯ рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рддрддреНрд╡ рдЕрдкрдиреА рдЙрдЬрд╛рдЧрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЧреБрдг рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдЗрди рддрддреНрд╡реЛрдВ рдХреЛ рдЙрдкрд░реЛрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде "рдмрд╕ рдХрд╛рдо" рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдирд┐рд▓рд╛ рдШрдЯрдХреЛрдВ рдХреЛ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ <input>
рдЬреИрд╕реЗ рдСрдбрдмреЙрд▓ рдирд╣реАрдВ) HTML5 рддрддреНрд╡ ( <video>
, <audio>
, рдЖрджрд┐) рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЬрдм рд░рд┐рдПрдХреНрдЯ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдореЗрд╢рд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрддрд╛ рд╣реИ рдХрд┐ HTML рдХрд╛ рднрд╡рд┐рд╖реНрдп рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рди рдирд╛рдорд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╢рд┐рдк рдХрд░реЗрдЧрд╛ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред рдЗрд╕ рдЪрд┐рдВрддрд╛ рдкрд░ рд╡рд┐рд╢реЗрд╖ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдмрдЪрдирд╛ (рд╕рд┐рд╡рд╛рдп рдЬрдм рдХреЛрдИ рдбреЗрд╡рд▓рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ ref
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ) рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рддрдм рддрдХ рджреВрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрддреЗред
рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЛ рдкреГрд╖реНрда рдкрд░ рдЖрд▓рд╕реА рд░реВрдк рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдкреАрдЖрд░рдкреАрдПрд▓ рдкреИрдЯрд░реНрди рдЗрд╕ рддрдХрдиреАрдХ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЕрдкрдЧреНрд░реЗрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд░рд┐рдПрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ-рднрд▓реЗ рд╣реА рд╡реЗ рдЧреБрдг рд▓реЛрдб рдХреА рдЧрдИ рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реЛрдВ- рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЬрдм рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ рдХреЛрдИ рдбреЗрд╡рд▓рдкрд░ рд╡реИрдирд┐рд▓рд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЛ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрддрд╛ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ API рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЙрдирдХрд╛ рдРрдк рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ref
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдареАрдХ рд╣реЛрдЧрд╛ (рдиреАрдЪреЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред
рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдХрд░ рддрд╛рдХрд┐ рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛ рд╕рдХреЗ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ ref
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
<custom-element ref={el => el.setAttribute('my-attr', val)} />
рдпрд╣ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрд▓рдЯрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ref
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЪреВрдВрдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рд╡реНрдпрд╛рдкрд╛рд░-рдмрдВрдж рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореЙрдбрд▓ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдореИрдк рдХрд░реЗрдЧрд╛ред рд░рд┐рдПрдХреНрдЯ рдпрд╣ рдорд╛рди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЧреБрдг рд╕рдорд╛рди рдирд╛рдорд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореИрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмреБрд▓реЗрдЯрдкреНрд░реВрдл рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рдКрдВрдЯ рдХреЗ рдЧреБрдгреЛрдВ -> рдбреИрд╢-рдХреЗрд╕реЗрдб рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдорд╛рдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд░рдирдЯрд╛рдЗрдо рдкрд░ рд░рд┐рдПрдХреНрдЯ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкрд░ рдХреЛрдИ рд╕рдВрдкрддреНрддрд┐ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ рдореМрдЬреВрдж рд╣реИ, рддреЛ рд░рд┐рдПрдХреНрдЯ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЕрдиреНрдпрдерд╛ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП Preact рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╕реНрдпреВрдбреЛрдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
if (propName in element) {
element[propName] = value;
} else {
element.setAttribute(propName.toLowerCase(), value);
}
рд╕рдВрднрд╛рд╡рд┐рдд рдХрджрдо:
рдпрджрд┐ рдХрд┐рд╕реА рддрддреНрд╡ рдореЗрдВ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рддреЛ рд░рд┐рдПрдХреНрдЯ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ рдХрд┐рд╕реА рддрддреНрд╡ рдореЗрдВ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрд╕реЗ рдЖрджрд┐рдо рдбреЗрдЯрд╛ (рд╕реНрдЯреНрд░рд┐рдВрдЧ/рд╕рдВрдЦреНрдпрд╛/рдмреВрд▓рд┐рдпрди) рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реА рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреАред
рдпрджрд┐ рдХрд┐рд╕реА рддрддреНрд╡ рдореЗрдВ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрд╕реЗ рдПрдХ рд╡рд╕реНрддреБ/рд╕рд░рдгреА рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реА рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕реЗ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░ рджреЗрдЧреАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ some-attr="[рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ]" рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рддрддреНрд╡ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ/рд╕рдВрдЦреНрдпрд╛/рдмреВрд▓рд┐рдпрди рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реА рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреАред
рдпрджрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рддрддреНрд╡ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ/рд╕рд░рдгреА рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реА рд╣реИ, рддреЛ рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрд▓реЗрдЦрди рд╢реИрд▓реА рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЙрдирдХреЗ рд▓рд┐рдП рдЧреИрд░-рдмреНрд░реЗрдХрд┐рдВрдЧ рд╣реЛрдЧрд╛ред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд░рд┐рдПрдХреНрдЯ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рддрддреНрд╡ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдЪреБрдирд╛ рд╣реИред
рд╕реЗрдмрд╕реНрдЯрд┐рдпрди рдиреЗ рдЪрд┐рдВрддрд╛ рд╡реНрдпрдХреНрдд рдХреА рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкрд░ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП in
рдХрд░рдиреЗ рд╕реЗ рдЧрд▓рддреА рд╕реЗ рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ (HTMLElement) рдкрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рд░реЛрдз рднреА рд╣реИрдВред
рд░рд┐рдПрдХреНрдЯ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕реЗрдЯ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рддрд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ Glimmer.js рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ
рдЪрдордХрджрд╛рд░ рдЙрджрд╛рд╣рд░рдг:
<custom-img @src="corgi.jpg" @hiResSrc="[email protected]" width="100%">
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, @ рд╕рд┐рдЧрд┐рд▓ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ src
рдФрд░ hiResSrc
рдХреЛ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ width
рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕рд┐рдЧрд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЕрдЧрд░ рд╡реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрд╣ рд╕рд┐рд░реНрдл рдмреЗрдорд╛рдиреА рд╣реЛрдЧрд╛)ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдПрдХреНрдЯ рдХреЗ рдПрдЪ/рдЯреА рд╕реЗ
рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╕рднреА рд░рд┐рдПрдХреНрдЯ + рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯ рдРрдк рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЗрдВрдЧреЗ рдЬреИрд╕реЗ рдЙрдирдХреЗ рдкрд╛рд╕ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдирдИ рд╕рддрд░реНрдХ рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЧреНрд▓рд┐рдорд░ рдХреЗ рд╕рдорд╛рди, рдПрдВрдЧреБрд▓рд░ рдФрд░ рд╡реАрдпреВ рджреЛрдиреЛрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╡реНрдпреВ рдЙрджрд╛рд╣рд░рдг:
<!-- Vue will serialize `foo` to an attribute string, and set `squid` using a JavaScript property -->
<custom-element :foo="barтАЭ :squid.prop=тАЭinkтАЭ>
рдХреЛрдгреАрдп рдЙрджрд╛рд╣рд░рдг:
<!-- Angular will serialize `foo` to an attribute string, and set `squid` using a JavaScript property -->
<custom-element [attr.foo]="barтАЭ [squid]=тАЭinkтАЭ>
рдЧреБрдг-рдЕрдЧрд░-рдЙрдкрд▓рдмреНрдз рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреИрд╕реЗ рдЕрдиреБрдорд╛рдиреА рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдареАрдХ рд╡рд╣реА рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдпрд╣ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реИ, рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ рд╕рд┐рдЧрд┐рд▓ рдХреЛ рд╕рдорд╛рди рдирд╛рдорд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рд░рд┐рдПрдХреНрдЯ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╛рд╕ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХрд╛ рдбреЗрдЯрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг:
const bar = 'baz';
const hello = 'World';
const width = '100%';
const ReactElement = <Test
foo={bar} // uses JavaScript property
attrs={{ hello, width }} // serialized to attributes
/>;
рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд @treshugart, Skate.js рдХреЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛, рдФрд░ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╡реИрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпред
рдЧреБрдг-рдЕрдЧрд░-рдЙрдкрд▓рдмреНрдз рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреИрд╕реЗ рдЕрдиреБрдорд╛рдиреА рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдареАрдХ рд╡рд╣реА рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдиреЛрдЯ: рдпрд╣ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ :)
рд╕рдорд╕реНрдпрд╛ # 7901 рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдШреЛрд╖рдгрд╛рддреНрдордХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рд░рд┐рдПрдХреНрдЯ рдЕрдкрдиреЗ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЗрд╡реЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдИрд╡реЗрдВрдЯ рдирд╛рдо рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдлреИрд╢рди рдореЗрдВ рдХреИрдкрд┐рдЯрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЬ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЗрд╡реЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реЛрдЧрд╛ рдХрд┐ JSX рд╕реЗ addEventListener
рддрдХ рдЗрд╡реЗрдВрдЯ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдорд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
// should this listen for: 'foobar', 'FooBar', or 'fooBar'?
onFooBar={handleFooBar}
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рднреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const bar = 'baz';
const hello = 'World';
const SquidChanged = e => console.log('yo');
const ReactElement = <Test
foo={bar}
attrs={{ hello }}
events={{ SquidChanged}} // addEventListener('SquidChanged', тАж)
/>;
рдЗрд╕ рдореЙрдбрд▓ рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдИрд╡реЗрдВрдЯ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ рдЕрдиреБрдорд╛рдиреА рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдпрд╣ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реИ, рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрджрд┐ рдХреЛрдИ рдШрдЯрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА attrs
рдпрд╛ events
рдирд╛рдо рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ, рддреЛ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
рд░рд┐рдПрдХреНрдЯ 17 рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдкрд┐рдЫрд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ) рдФрд░ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдмрд╛рдж рдореЗрдВ, рдмрдбрд╝реЗ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦреЗрдВред
рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ @sophiebits рдФрд░ @gaearon рджреНрд╡рд╛рд░рд╛ рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдХреА
рд░рд┐рдПрдХреНрдЯ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдПрдкреАрдЖрдИ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рддрддреНрд╡ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдореИрдк рдХрд░рддрд╛ рд╣реИред
рд╕реНрдпреВрдбреЛрдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
const XFoo = ReactDOM.createCustomElementType({
element: тАШx-fooтАЩ,
тАШmy-attrтАЩ: // something that tells React what to do with it
someRichDataProp: // something that tells React what to do with it
});
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдШрдЯрдХ рджреЗрддрд╛ рд╣реИ, XFoo
рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИред рдЖрдк рд╕реАрдзреЗ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдЗрд╕ рдкреНрд░реЙрдХреНрд╕реА рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ:
<XFoo someRichDataProp={...} />
рдбреЗрд╡рд▓рдкрд░реНрд╕ рд░рд┐рдПрдХреНрдЯ рдХреЛ рд╡рд╣реА рд╕рдЯреАрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдбреЗрд╡рд▓рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯ-рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╡рд░реНрддрдорд╛рди рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдирдП JSX рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдиреНрдп API рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PropTypes (рднрд▓реЗ рд╣реА рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛ) рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреБрдЫ рд╣рдж рддрдХ рд╕рдорд╛рди рд╣реИред
рдкреЙрд▓рд┐рдорд░ рдХреЗ рдкреЗрдкрд░-рдЗрдирдкреБрдЯ рддрддреНрд╡ рдореЗрдВ 37 рдЧреБрдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдХреЙрдиреНрдлрд┐рдЧ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЙрдиреНрдлрд┐рдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдмрд┐рдВрджреБ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд, рдкреНрд░рддреНрдпреЗрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд╡рд░реНрдЧ рдЕрдм рдЗрд╕рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ + рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдХрд╛рд░ рдХреА рд▓рд╛рдЧрдд рд╡рд╣рди рдХрд░рддрд╛ рд╣реИред
рдиреЛрдЯ: рдореБрдЭреЗ 100% рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдЪ рд╣реИред
рд╣рд░ рдмрд╛рд░ рдЬрдм рдШрдЯрдХ рдПрдХ рдорд╛рдореВрд▓реА рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрд╢реЛрдзрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдирдИ рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рднреА рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд░рдЦрд░рдЦрд╛рд╡ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╕реНрд░реЛрдд рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмреЛрдЭ рд╕реЗ рдХрдо рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрдм рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЯреВрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред
рд╕реАрд╕реА @sebmarkbage @gaearon @developit @treshugart @justinfagnani
рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝реА, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рддрд▓рд╛рд╢ рд░рд╣рд╛ рдерд╛ред рдореИрдВ рдЕрдкрдиреА рд░рд╛рдп рдХреЗ рд╕рд╛рде рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдЪреБрдирдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдерд╛, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд┐рдХрд▓реНрдк 3 рдХреЗ рд╕рд╛рде рдЬрд╛рдКрдВрдЧрд╛ред
рд╡рд┐рдХрд▓реНрдк 3 рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрдд, рдШреЛрд╖рдгрд╛рддреНрдордХ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдлрд╝реЙрд▓рдмреИрдХ рд╣реНрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рди рд╕рд┐рдЧрд┐рд▓/рд╕рдВрд╢реЛрдзрдХ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝реА, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рддрд▓рд╛рд╢ рд░рд╣рд╛ рдерд╛ред рдореИрдВ рдЕрдкрдиреА рд░рд╛рдп рдХреЗ рд╕рд╛рде рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдЪреБрдирдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдерд╛, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд┐рдХрд▓реНрдк 3 рдХреЗ рд╕рд╛рде рдЬрд╛рдКрдВрдЧрд╛ред
рд╡рд┐рдХрд▓реНрдк 3 рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрдд, рдШреЛрд╖рдгрд╛рддреНрдордХ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдлрд╝реЙрд▓рдмреИрдХ рд╣реНрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╛рди рд╕рд┐рдЧрд┐рд▓/рд╕рдВрд╢реЛрдзрдХ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рд╡рд┐рдХрд▓реНрдк 2 рдФрд░ рд╡рд┐рдХрд▓реНрдк 3 рдХреЗ рдмреАрдЪ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрднрд╛рд▓рд╛ рд╣реИ рдФрд░ рдПрдкреАрдЖрдИ рдЕрддреАрдд рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрджрд▓рддрд╛ рд╣реИред рдбреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдФрд░ рд▓рд┐рдВрдХ рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ рдХрд┐ рд╣реБрдб рдХреЗ рддрд╣рдд рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк 3 рдЗрд╕рдХреА рдШреЛрд╖рдгрд╛рддреНрдордХ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рдЖрдХрд░реНрд╖рдХ рджрд┐рдЦрддрд╛ рд╣реИ, JSX рдХреЛрдб рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп рдирдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рддреБрд░рдВрдд рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рддрддреНрд╡ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╕рдордп рд░рд┐рдПрдХреНрдЯ рдХреНрдпрд╛ рдХрд░реЗрдЧрд╛ред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рд░рд┐рдПрдХреНрдЯ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рддрддреНрд╡ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдЪреБрдирд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡ рдХреЗ рд▓реЗрдЦрдХ рдХреЛ HTML рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЪреВрдВрдХрд┐ HTML рдЙрдкрдпреЛрдЧ рд╕реЗ рдбреЗрдЯрд╛ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХрд╛ рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ) рдФрд░ рдЧреБрдг рдпрджрд┐ рд╡реЗ рдЬрдЯрд┐рд▓ рдореВрд▓реНрдпреЛрдВ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ DOM рд╕реЗ рдкреНрд░рд╛рдкреНрдд/рд╕реЗрдЯ рдХрд░реЗрдВред рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рд▓реЗрдЦрдХ рдиреЗ рд╢реБрд░реВ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реЛ рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝ рд╕рдХреЗ рдФрд░ рдлрд┐рд░ рднреА рдЧреБрдгреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХреЗред
рднрд╡рд┐рд╖реНрдп рдХреЗ HTMLElement рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдирд╛рдордХрд░рдг рдЯрдХрд░рд╛рд╡ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡реЗрдм рдШрдЯрдХ рдорд╛рдирдХреЛрдВ рдореЗрдВ рдПрдХ рдХрдордЬреЛрд░реА рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдпрджрд┐ рдХрд┐рд╕реА рддрддреНрд╡ рдореЗрдВ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрд╕реЗ рдПрдХ рд╡рд╕реНрддреБ/рд╕рд░рдгреА рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реА рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕реЗ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░ рджреЗрдЧреАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ some-attr="[рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ]" рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдВрдзрдирд╛ рднреНрд░рдорд┐рдд рд╣реИред рдпрджрд┐ рддрддреНрд╡ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЧреЗрдЯрд░/рд╕реЗрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рддрддреНрд╡ рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ рдорд╛рди рдХрднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк 3 рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡ рдиреЗ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдЖрдк рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдФрд░ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рдорд┐рд╢реНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЕрд▓рдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдПрдХреНрдЯ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рднреНрд░рд╛рдордХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ?
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдмрддрд╛рдпрд╛, рддрддреНрд╡ рд▓реЗрдЦрдХ рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рджреЛрдиреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдпрд╣ рднреА рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рд┐рдВрдХ рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕реЗрдЯ рджреВрд╕рд░реЗ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ)ред
рднрд╡рд┐рд╖реНрдп рдХреЗ HTMLElement рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдирд╛рдордХрд░рдг рдЯрдХрд░рд╛рд╡ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡реЗрдм рдШрдЯрдХ рдорд╛рдирдХреЛрдВ рдореЗрдВ рдПрдХ рдХрдордЬреЛрд░реА рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯ рд╕реНрдкреЗрдХ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЖрдЧрд╛рдореА рдЯреАрдкреАрдПрд╕реА рдорд╛рдирдХреЛрдВ рдХреА рдмреИрдардХ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ _as_ рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рддрддреНрд╡-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐ HTMLElement рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рднрд╡рд┐рд╖реНрдп рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЫрд╛рдпрд╛ рджреЗрдЧреАред рддреЛ рдпрджрд┐ рдЖрдк рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЛ рдЬреЗрдПрд╕ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред рдореБрдЦреНрдп рдореБрджреНрджрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрд╛рдВрдзрдирд╛ рднреНрд░рдорд┐рдд рд╣реИред рдпрджрд┐ рддрддреНрд╡ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЧреЗрдЯрд░/рд╕реЗрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рддреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рддрддреНрд╡ рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ рдорд╛рди рдХрднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдЖрд▓рд╕реА рд▓реЛрдб рдФрд░ "рдЙрдиреНрдирдд" рд╣реИ, рдЗрд╕рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧреБрдг рд╣реЛрдВрдЧреЗред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рдЕрднреА рднреА рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╡реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЛрд╕реНрдЯ-рдЕрдкрдЧреНрд░реЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдпрджрд┐ рд▓реЗрдЦрдХ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдЧреЗрдЯрдЯрд░/рд╕реЗрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди my-attr=[object Object]
рднреА рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ рдпрд╛ рдпрджрд┐ рд╡реЗ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗрд╡рд▓ рдЖрд▓рд╕реА рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд▓рдЧрддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк 3 рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡ рдиреЗ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЖрдЬ рдПрдХ рд╣реА рдирд╛рд╡ рдореЗрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХ рдХреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рдХреЗ рдЧреБрдгреЛрдВ рд╡рд╛рд▓рд╛ рдПрдХ рддрддреНрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХреЛрдИ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдореБрдЭреЗ рдЬреЗрдПрд╕ рдЧреБрдгреЛрдВ рдХреЛ рд╕реАрдзреЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ref
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдПрдХ рдЖрджрд┐рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реЛред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдард┐рди рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЖрдЬ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЧреБрдг рдмрдирд╛рддреЗ рд╣реИрдВред
[рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ]
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдмрд┐рдВрджреБ рдореЗрдВ рдХрд╣рд╛ рдерд╛:
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡ рдХреЗ рд▓реЗрдЦрдХ рдХреЛ HTML рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЪреВрдВрдХрд┐ HTML рдЙрдкрдпреЛрдЧ рд╕реЗ рдбреЗрдЯрд╛ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХрд╛ рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ) рдФрд░ рдЧреБрдг рдпрджрд┐ рд╡реЗ рдЬрдЯрд┐рд▓ рдореВрд▓реНрдпреЛрдВ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ DOM рд╕реЗ рдкреНрд░рд╛рдкреНрдд/рд╕реЗрдЯ рдХрд░реЗрдВред
рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреЗ рддрддреНрд╡ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреИрд╕реЗ рдХрд░реЗрдЧрд╛, рдлрд┐рд░ рднреА рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛-рд╕рдВрдкрддреНрддрд┐ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╡рд┐рдХрд▓реНрдк 3 рднреЗрдЬ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ @
рд╕рд┐рдЧрд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдм рдХреБрдЫ рдмрд╛рдВрдз рджреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдореИрдВ рдЖрдЬ Vue рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ .prop
рд╕рдВрд╢реЛрдзрдХ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рддрддреНрд╡ рдиреЗ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ
рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЪрд┐рдВрддрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд░реЙрдм рдиреЗ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХрд╣рд╛, рдпрд╣ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИ рдХрд┐ рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдмрддрд╛рдП рдХрд┐ рддрддреНрд╡ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдЖрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП <video>
рддрддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдореНрдпреВрдЯ рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
muted
рдПрдХ рдмреВрд▓рд┐рдпрди рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
render() {
return (
<div className="video--wrapper">
<video muted={ this.state.muted } />
</div>
);
}
рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╡реАрдбрд┐рдпреЛ рддрддреНрд╡ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП ref
рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред
render() {
return (
<div className="video--wrapper">
<video ref={ el => this.video = el } muted={ this.state.muted } />
</div>
);
}
рдлрд┐рд░ рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░, рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ DOM рддрддреНрд╡ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
onCurrenTimeChange(e) {
this.video.currentTime = e.value;
}
рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдШреЛрд╖рдгрд╛рддреНрдордХ рдореЙрдбрд▓ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдФрд░ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдЕрдореВрд░реНрдд рдкрд░рдд рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ currentTime
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд░реИрдкрд░ рдШрдЯрдХ рдореЗрдВ рдПрдХ рд░рд╛рдЬреНрдп рд╣реИ, рд╕рдВрдкрддреНрддрд┐ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рдЕрднреА рднреА рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рд▓реЗрдХрд┐рди JSX рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдореЙрдбрд▓ рдЕрдзрд┐рдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ refs рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ:
render() {
return (
<div className="video--wrapper">
<video muted={ this.state.muted } @currentTime={ this.state.currentTime } />
</div>
);
}
рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЪрд╛рд╣реЗ рдЖрдк рджреЗрд╢реА рдпрд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рдлрд┐рд░ рднреА рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рд▓реЗрдЦрдХ рд╕реЗ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред
@cjorasch рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ :)
рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рдкреАрдЫреЗ рдХреА рд╕рдВрдЧрддрддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд▓реНрдк 1 рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдХреЗрдВрджреНрд░рд┐рдд рдПрдкреАрдЖрдИ рдЯреВ рдбреЛрдо" рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╣реЛрдЧрд╛ред
рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдХреНрдпрд╛ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рддрддреНрд╡ рдЧреБрдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рдП? рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИ? рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдирд╛рдо (рдЗрд╕рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ) рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ 1:1 рдкрддреНрд░рд╛рдЪрд╛рд░ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджреБрд░реНрд▓рдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд▓реНрдк 3 рднреА рдмрд╣реБрдд рдЖрдХрд░реНрд╖рдХ рд╣реИред рдпрджрд┐ рд╕рд┐рдЧрд┐рд▓ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ "ред" рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдПрдХреНрд╕реЗрд╕рд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╣рд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рд╣реИ рдмрдирд╛рдо рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рд╣реИред рдореИрдВ рд╡рд┐рдХрд▓реНрдк 1 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рдЙрд╕ рдореИрдкрд┐рдВрдЧ рдХреЛрдб рдХреЛ рд╕рднреА JSX рдЙрдкрдпреЛрдЧреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдЖрд▓рд╕реА рд▓реЛрдб рдФрд░ "рдЙрдиреНрдирдд" рд╣реИ, рдЗрд╕рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧреБрдг рд╣реЛрдВрдЧреЗред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рдЕрднреА рднреА рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╡реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЛрд╕реНрдЯ-рдЕрдкрдЧреНрд░реЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдореИрдВ рдЕрдкрдЧреНрд░реЗрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред рддрддреНрд╡реЛрдВ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдХреНрд▓рд╛рд╕ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдЧреЗрдЯрд░реНрд╕/рд╕реЗрдЯрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВред propName in element
рдЬрд╛рдВрдЪ рдЧреЗрдЯрдЯрд░/рд╕реЗрдЯрд░ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдХрд╛рд░рдг рд╕рддреНрдп рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА, рднрд▓реЗ рд╣реА рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдЕрднреА рднреА рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдерд╛ред рдЕрдкрдЧреНрд░реЗрдб рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдХреБрдЫ рдЕрд╕реНрдерд╛рдпреА рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЖрд▓рд╕реА рд▓реЛрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХреЙрдкреА рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ?
рдЙрдиреНрдирдпрди рд╡рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ/рд╕реЗрдЯрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред
@jeremenichelli
рдореНрдпреВрдЯ рдПрдХ рдмреВрд▓рд┐рдпрди рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЕрднреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдкрддреНрддрд┐ рднреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ MDN рдкрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ: P
рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╡реАрдбрд┐рдпреЛ рддрддреНрд╡ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд░реЗрдлрд░реА рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
рд╣рд╛рдБ рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдЖрдзреБрдирд┐рдХ HTML рддрддреНрд╡реЛрдВ рдкрд░ рдЧреБрдг-рдХреЗрд╡рд▓ API рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ред currentTime
рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЕрдкрдбреЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ HTML рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдореЗрд░рд╛ рдХрд╣рдирд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдореМрд╕рдо рдореЗрдВ рдЖрдк рджреЗрд╢реА рдпрд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЕрднреА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдирдХреЗ рдЖрд╕рдкрд╛рд╕ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
рд╣рд╛рдВ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХреЛрдИ рдПрдХ рдЖрдХрд╛рд░-рдлрд┐рдЯ-рд╕рднреА рдЧреБрдг/рдЧреБрдг рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдо рддреМрд░ рдкрд░ рдмреЛрд▓рддреЗ рд╣реБрдП рдЖрдк рдЧреБрдгреЛрдВ рдкрд░ рднрд╛рд░реА рдкрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред
@robdodson рд╣рд╛рдБ , рдореИрдВ рдореНрдпреВрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирддрд╛ рдерд╛ ЁЯШД рдореИрдВрдиреЗ рдЗрди рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _in the wild_ рдПрдХ рдЖрдХрд╛рд░-рдлрд┐рдЯ-рд╕рднреА рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред
рд╣рдореЗрдВ рдореВрд▓ рдФрд░ рдХрд╕реНрдЯрдо рджреЛрдиреЛрдВ рддрддреНрд╡реЛрдВ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЗрд╕ рдирд┐рд░реНрдгрдп рдХреЗ рд▓рд┐рдП рдмреБрд░рд╛ рдирд╣реАрдВ рдорд╛рдиреВрдВрдЧрд╛ред
рдЖрдЦрд┐рд░реА рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп рдореБрдЭреЗ рд╕рдВрдкрддреНрддрд┐ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдкрд╕рдВрдж рдЖрдИ, рд╣рд╛рд▓рд╛рдВрдХрд┐
@effulgentsia
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╣рд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рд╣реИ рдмрдирд╛рдо рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдЬ рдорд╛рдорд▓рд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдкреНрд░рдореБрдЦ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдмрд╣реБрд▓рдХ, рд╕реНрдХреЗрдЯ, рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп?) рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдЙрдЬрд╛рдЧрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреИрдХрд┐рдВрдЧ рдЧреБрдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗрд╡рд▓ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧрд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╢рд╛рдпрдж рдПрдХ рджреБрд░реНрд▓рдн рдШрдЯрдирд╛ рд╣реЛрдЧреАред
@cjorasch
рдЖрд░рдИ: рдЕрдкрдЧреНрд░реЗрдбред рдЬреИрд╕рд╛ рдХрд┐ @effulgentsia рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдкреГрд╖реНрда рдкрд░ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реИ рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд▓реЛрдб рдХрд░реЗрдВред <x-foo>
рд╢реБрд░реВ рдореЗрдВ HTMLElement
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ рдФрд░ рдЬрдм рдореИрдВ рдЗрд╕рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдмрд╛рдж рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ "рдЕрдкрдЧреНрд░реЗрдб" рд╣реЛрддрд╛ рд╣реИ рдФрд░ XFoo
рд╡рд░реНрдЧ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрди рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЗрд╕рдХреЗ рд╕рднреА рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЙрд▓рд┐рдорд░ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдХрд┐рдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
<app-router>
<my-view1></my-view1>
<my-view2></my-view2>
</app-router>
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо my-view2
рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рддрдм рддрдХ рд▓реЛрдб рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рд░рд╛рдЙрдЯрд░ рдЙрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рди рдХрд░ рджреЗред
рдХрд┐рд╕реА рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдПрдХ рдмрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд╛ рд▓реЛрдб рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рддрддреНрд╡ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдиреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рджреМрд░рд╛рди рд╣рдбрд╝рдк рд╕рдХрддрд╛ рд╣реИред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдВрддрд░ рдХреИрд╕реЗ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ "рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ "рдЬрд░реВрд░реА" рд╣реИ? рдФрд░ рдХреНрдпрд╛ рдпрд╣ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рднрд┐рдиреНрдирддрд╛ рдирд╣реАрдВ рд╣реИ?
рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдВрддрд░ рдХреИрд╕реЗ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ "рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ "рдЬрд░реВрд░реА" рд╣реИ?
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╢рд╛рдпрдж рдореИрдВрдиреЗ рдЗрд╕реЗ рдЧрд▓рдд рдмрддрд╛рдпрд╛ред рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рдВрднрд╡рддрдГ рд╕рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рд╕реБрд╕рдВрдЧрдд рдкрд░рд┐рдгрд╛рдо рджреЗрдЧрд╛ред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрджрд┐рдо рдбреЗрдЯрд╛ рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдЬреИрд╕реЗ рд╕рдореГрджреНрдз рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдФрд░ рдХреНрдпрд╛ рдпрд╣ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рднрд┐рдиреНрдирддрд╛ рдирд╣реАрдВ рд╣реИ?
рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рд┐рдЧрд┐рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПред
рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рд┐рдЧрд┐рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдпрджрд┐ рд╕рддрд░реНрдХ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╡реАрдбрд┐рдпреЛ рдХрд╛ currentTime ред
рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрддрд░ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ "рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ "рдЬрд░реВрд░реА"
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднреЗрджрднрд╛рд╡ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╛рд░рдг рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕рдПрд╕рдЖрд░ рдкрд╕рдВрдж рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдг рдмрдирд╛рдо рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкреНрд░рддрд┐рдкрд╛рджрди рдкрд╕рдВрдж рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдг) рдмрдирд╛рдо рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдпрд╛ рддреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдХреЗрд╡рд▓ рд╕рдореНрдкрддреНрддрд┐ред
рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдХреНрдпрд╛ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рддрддреНрд╡ рдЧреБрдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рдП?
рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реВрдВ:
ReactDOM.defineCustomElementProp(elementName, propName, domPropertyName, htmlAttributeName, attributeSerializer)
рдЙрджрд╛рд╣рд░рдг:
// 'muted' can be set as either a property or an attribute.
ReactDOM.defineCustomElementProp('x-foo', 'muted', 'muted', 'muted')
// 'currentTime' can only be set as a property.
ReactDOM.defineCustomElementProp('x-foo', 'currentTime', 'currentTime', null)
// 'my-attribute' can only be set as an attribute.
ReactDOM.defineCustomElementProp('x-foo', 'my-attribute', null, 'my-attribute')
// 'richData' can be set as either a property or an attribute.
// When setting as an attribute, set it as a JSON string rather than "[object Object]".
ReactDOM.defineCustomElementProp('x-foo', 'richData', 'richData', 'richdata', JSON.stringify)
рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдЬрд╣рд╛рдВ htmlAttributeName
рд╢реВрдиреНрдп рд╣реИ), SSR рдЗрд╕реЗ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╣рд╛рдЗрдбреНрд░реЗрдЯ рдХрд░реЗрдЧрд╛ред
рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдЬрд╣рд╛рдВ domPropertyName
рд╢реВрдиреНрдп рд╣реИ), рд░рд┐рдПрдХреНрдЯ setAttribute()
рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ v16.
рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЬреЛ рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдЪреБрди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд░рдгрдиреАрддрд┐ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрд╢рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХреЗ рд░реВрдк рдореЗрдВред рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рддрддреНрд╡ рдмрдирд╛рддреЗ рд╕рдордп рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ vdom рд╕реЗ рдкреИрдЪрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ред рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рдорддрд▓рдм рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ рдЬрдм рдорд╛рди рдПрдХ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЬрдм рднреА рд╡рд╣ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рд╣реЗ рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рдгрдиреАрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрдм рд░рд┐рдПрдХреНрдЯ рдПрдХ рдРрд╕реЗ рдкреНрд░реЛрдк рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП defineCustomElementProp()
рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬрд┐рд╕реЗ HTML рд╕реНрдкреЗрдХ рджреНрд╡рд╛рд░рд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд░рд┐рдПрдХреНрдЯ рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рд╛рдпрдж:
рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдПрдкреАрдЖрдИ рд░рдЦрдХрд░, JSX рдФрд░ props
рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рд╛рдл рдФрд░ рдПрдХ рд╣реА рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рднреАрддрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╡реЗ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдФрд░ рдЧреИрд░-рдХрд╕реНрдЯрдо HTML рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВред
рдЕрддреНрдпрдзрд┐рдХ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдКрдкрд░ рдЕрдкрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд▓рд╛рдн рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдЬрд┐рд╕реЗ рдореИрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
рдЙрди ReactDOM.defineCustomElementProp()
рдХреЙрд▓ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрд╕реА рднрдВрдбрд╛рд░ рдореЗрдВ рдЬрд╣рд╛рдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдмрдирд╛рдП рд░рдЦрд╛/рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд╕рдВрдкрддреНрддрд┐/рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рдЦреНрдд 1:1 рдкрддреНрд░рд╛рдЪрд╛рд░ рд╡рд╛рд▓реЗ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реИрд╕реЗ рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдФрд░ рдмрд╣реБрдордд рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЗрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХреАрдХрд░рдг рдлрд╝рд╛рдЗрд▓ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ рд▓реЗрдЦрдХ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рддреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рд╕рдореБрджрд╛рдп рдЬреЛ рдЙрд╕ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рдПрдХреНрдЯ рдРрдкреНрд╕ рдХреЗ рднреАрддрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕ рдПрдХреАрдХрд░рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреЗрдВрджреНрд░реАрдп рднрдВрдбрд╛рд░ рдХреЛ рд╕реНрд╡рдпрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЗрдВрджреНрд░реАрдХрд░рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдПрдХ рдРрд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡рд┐рдХрд▓реНрдк 3 рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реИ... рдЙрд▓рдЯрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рд╣реИ рд╕рд╣рд╛рд░рд╛ рдирд╣реАрдВ?
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рд┐рдЧрд┐рд▓, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВред JSX рдпреБрдХреНрддрд┐ рдХреЛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдЕрддреНрдпрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рдХрд╛рд░рдг рдЕрдирд┐рдпрдорд┐рддрддрд╛рдУрдВ рдкрд░ рдирд╣реАрдВред obj[prop] = value
рдФрд░ obj.setAttributes(props, value)
рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреАрдЖрдИ рдХреЛ рджреЗрдЦрдХрд░ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред @ : []
рд╕рддрд╣ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд▓реАрдХ рдХрд░ рджреЗрдЧрд╛ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрдВрджреНрд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЦрдВрдбрди рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдпреБрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ: const data = <strong i="8">@myFunction</strong> // -> "[object Object]"
рдЕрдЧрд░ рдореБрдЭреЗ рдПрдХ рд╡реЗрдм рдШрдЯрдХ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рд░рд┐рдПрдХреНрдЯ рдФрд░ JSX рд╕реЗ рджреВрд░ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рд╕рд╛рде рд╣реА рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рд╡реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ, ref => ...
рдХреЛ рдЬрдЧрд╣ рдкрд░ рдЫреЛрдбрд╝рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред ref
рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдХрдо рд╕реЗ рдХрдо рдбреЗрд╡рд▓рдкрд░ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХреЛрдИ рд╕рддрд░реНрдХ-рд░рд┐рд╕рд╛рд╡ рдирд╣реАрдВ рд╣реИ, рди рд╣реА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреЛ рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреА рд╣реИрдВред
@рд▓реАрдЪреЗрдиреЗрд▓рд░
рд╡рд┐рдХрд▓реНрдк 3 рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реИ... рдЙрд▓рдЯрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рд╣реИ рд╕рд╣рд╛рд░рд╛ рдирд╣реАрдВ?
рдпрд╣ рдПрдХ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдмрджрд▓рд╛рд╡ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛? рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдмрдирд╛ рд░рд╣реЗрдЧрд╛ред рд╕рд┐рдЧрд┐рд▓ рдСрдкреНрдЯ-рдЗрди рд╣реЛрдЧрд╛ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рд╕реНрдкреЙрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рд╡реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреЗрдПрд╕ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ref
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
@drcmda
рди рддреЛ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЬреЛ рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреА рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдорддрд▓рдм рдерд╛?
рдПрдлрд╡рд╛рдИрдЖрдИ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рднреА, рдореИрдВрдиреЗ рдЖрд░рдПрдлрд╕реА рдХреЛ рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП 5 рд╡реЗрдВ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред
@robdodson
рдореИрдВ рдЗрд╕рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рдерд╛:
рд╡рд┐рдХрд▓реНрдк 4: рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд╕реНрддреБ рдЬреЛрдбрд╝реЗрдВ
рджреЛрд╖
рдпрд╣ рдПрдХ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдмрджрд▓рд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рд╡рд┐рдХрд▓реНрдк 5 рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдЕрднреА "рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд" рдПрдкреАрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓рд┐рдП рдмрд┐рдирд╛ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдЕрднреА рднреА "рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ" рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣реИред рд╣рдо рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдкреЙрд▓рд┐рдорд░ рдХреЗ рдкреЗрдкрд░-рдЗрдирдкреБрдЯ рддрддреНрд╡ рдореЗрдВ 37 рдЧреБрдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдХреЙрдиреНрдлрд┐рдЧ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЙрдиреНрдлрд┐рдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдиреНрд╣реЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрддрдГ рдРрдк-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░/рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдкреНрд░рд╡рд╛рд╕рди рд░рдгрдиреАрддрд┐
import XButton from './XButton';
рдФрд░ рдЬреЛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ
export default ReactDOM.createCustomElementType(...)
рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдХреЛ рдмрджрд▓рдиреЗ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдордп рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред
рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд▓реЛрдЧ рдЗрдВрдЯрд░рдСрдк рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд╣рд╛рдпрдХ рднреА рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рднреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЙрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдпрджрд┐ рд╣рдо рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рд╕реНрдерд┐рд░ рд╣реЛрддреЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕-рд░рд╣рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд╕реНрддрд╛рд╡ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХрд╕реНрдЯрдо рддрддреНрд╡ + рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдореНрдореЛрд╣рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ (рдЬреИрд╕реЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ) рдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрдзрд░ рдореЗрдВ рд▓рдЯрдХрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╕реБрд╡рд┐рдзрд╛ рд╡рд░реНрдмреЛрд╕рд┐рдЯреА рдХреЛ рдСрдлрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд▓рд╛рдн рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ .
рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдирд┐рд░реНрдорд╛рдг, рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
const XFoo = ReactDOM.createCustomElementType('x-foo', {
propName1: {
propertyName: string | null,
attributeName: string | null,
attributeSerializer: function | null,
eventName: string | null,
}
propName2: {
}
...
});
XFoo рдЙрджрд╛рд╣рд░рдг рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдПрдХреНрдЯ рдкреНрд░реЛрдк рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рддрдм рд╣реЛрдЧрд╛:
eventName
рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ рдЬреЛ рдкреНрд░реЛрдк рдорд╛рди (рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИредpropertyName
рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрд▓реАрдореЗрдВрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдкреНрд░реЛрдк рд╡реИрд▓реНрдпреВ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВредattributeName
рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рддрддреНрд╡ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХрдбрд╝реЗ рдкреНрд░реЛрдк рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдпрджрд┐ attributeSerializer
рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдк рд╡реИрд▓реНрдпреВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВред рдЕрдиреНрдпрдерд╛, рдмрд╕ '' + propValue
редрдкреЙрд▓рд┐рдорд░ рдХреЗ рдкреЗрдкрд░-рдЗрдирдкреБрдЯ рддрддреНрд╡ рдореЗрдВ 37 рдЧреБрдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдХреЙрдиреНрдлрд┐рдЧ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛ред
рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗрд╡рд▓ рдмрд╛рд╣рд░реА рдкреНрд░реЛрдк рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛред XFoo рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдк рдХреЗ рд▓рд┐рдП рдЬреЛ рдХрд┐ рдХреЙрдиреНрдлрд┐рдЧ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдерд╛, рдЗрд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд░реЗрдВ:
eventName: the prop name,
propertyName: the prop name,
attributeName: camelCaseToDashCase(the prop name),
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рд╢рд╛рдпрдж рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА рд╕реЗ eventName
рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдИрд╡реЗрдВрдЯ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рджреЗрдВ:
<XFoo prop1={propValue1} prop2={propValue2} events={event1: functionFoo, event2: functionBar}>
</XFoo>
@gaearon @effulgentsia рдЖрдк рд╡рд┐рдХрд▓реНрдк 1 рдФрд░ рд╡рд┐рдХрд▓реНрдк 5 рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?
рд╡рд┐рдХрд▓реНрдк 1 рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рдЖрдХрд╕реНрдорд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдореГрджреНрдз рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред рдореИрдВ рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореИрдВ рдПрдХ рдРрдк рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдмрд╕ рдХреБрдЫ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрддрдирд╛ рдирд┐рд╡реЗрд╢рд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╡рд┐рдХрд▓реНрдк 5 рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ рдЬреЛ рдЕрдкрдиреЗ рдкреВрд░реЗ рдРрдк рдореЗрдВ рдкреЗрдкрд░-рдЗрдирдкреБрдЯ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреА рдЯреАрдо рдХреЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рдВрдкреВрд░реНрдг рдПрдкреАрдЖрдИ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╡рд┐рдХрд▓реНрдк 1 рдХреЗ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп рдЕрдиреБрдорд╛рдиреА рд╣рдореЗрд╢рд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдХреИрдорд▓рдХреЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдбреИрд╢-рдХреЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╡реЗрдм рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
рдореБрдЭреЗ рд╡рд┐рдХрд▓реНрдк 1 + рд╡рд┐рдХрд▓реНрдк 5 рд╕рдВрдпреЛрдЬрди рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рдкрд╕рдВрдж рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП:
<x-foo prop1={propValue1}>
рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛: рдкреНрд░реЙрдк1 рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдПрдХ (рдбреИрд╢-рдХреЗрд╕реЗрдб) рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рд╣реИред
рдФрд░ рд▓реЛрдЧ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк 5 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдЙрдирдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ 16 рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛ред рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЙрд╕ рдЯреВрдЯрдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рдереЗ рдЬреЛ рдЧреБрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ), рд╡реЗ рд╡рд┐рдХрд▓реНрдк 5 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдПрдХ рдмреНрд░реЗрдХ рд╣реИред рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдкрд░ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВред
рдЖрд╣, рдЯреНрд░реЗрди рдореЗрдВ рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣реА рдорд┐рд▓рддрд╛ рд╣реИ @robdodson ЁЯджтАНтЩВя╕П ... рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рд╡рд┐рдХрд▓реНрдк 3 рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реИ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рднреА рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдЭрд┐рдЭрдХред
рд╡рд┐рдХрд▓реНрдк 5 рдЙрдЪрд┐рдд рдФрд░ рд╕реАрдзрд╛ рд▓рдЧрддрд╛ рд╣реИред
рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ рдЬрд╣рд╛рдВ @effulgentsia рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдРрд╕рд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
const XFoo = ReactDOM.createCustomElementType('x-foo', {
propName1: T.Attribute,
propName2: T.Event,
propName3: T.Prop
})
рдпрд╛ рдПрдХ рд╣реА рдкреНрд░реЛрдк рдкрд░ рдХрдИ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ?
рдореИрдВ рдЗрд╕ рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рд╣рд┐рдЪрдХрд┐рдЪрд╛рдКрдВрдЧрд╛ рд╣рд╛рд▓рд╛рдВрдХрд┐
рдпрджрд┐ рдорд╛рди рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ:
рдЗрд╡реЗрдВрдЯрдирд╛рдо: рдкреНрд░реЛрдк рдирд╛рдо,
рдЕрдиреНрдпрдерд╛:
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо: рдкреНрд░реЛрдк рдирд╛рдо,
рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо: рдХреИрдорд▓рдХреЗрд╕ рдЯреЛрдбреИрд╢рдХреЗрд╕ (рдкреНрд░реЛрдк рдирд╛рдо),
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдк рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдирд╛рдо рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рджреЛрдиреЛрдВ рдХреЛ рд╕рдордЭрджрд╛рд░ рдмрддрд╛ рд░рд╣рд╛ рд╣реВрдВ? рдЖрдк рджреЛрдиреЛрдВ рдХреЛ рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рд╢реНрди рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдм рд╕рдорд░реНрдерди рджреЗрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдореИрдВ
@рд▓реАрдЪреЗрдиреЗрд▓рд░ :
рд╕рдорд╕реНрдпрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдХреЗ рд╡рд┐рдХрд▓реНрдк 1 рдкреЗрд╢реЗрд╡рд░реЛрдВ рд╕реЗ рдЙрджреНрдзрд░рдг:
рдкреЙрд▓рд┐рдорд░ рдпрд╛ рд╕реНрдХреЗрдЯ рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рддрддреНрд╡ рдЕрдкрдиреА рдЙрдЬрд╛рдЧрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЧреБрдг рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдЗрди рддрддреНрд╡реЛрдВ рдХреЛ рдЙрдкрд░реЛрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде "рдмрд╕ рдХрд╛рдо" рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдирд┐рд▓рд╛ рдШрдЯрдХреЛрдВ рдХреЛ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ
<input>
рдЬреИрд╕реЗ рдСрдбрдмреЙрд▓ рдирд╣реАрдВ) HTML5 рддрддреНрд╡ (<video>
,<audio>
, рдЖрджрд┐) рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рддреЛ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕рдВрдкрддреНрддрд┐рдирд╛рдо рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдирд╛рдо рджреЛрдиреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдордЭрджрд╛рд░ рд╣реИ: рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдФрд░ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдЧрд░реВрдХ рдХрд░рдХреЗ, рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ: рдЬреИрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЧреБрдг рдмрд┐рдирд╛ рд╕рдВрдмрдВрдзрд┐рдд рдЧреБрдгреЛрдВ рдФрд░/рдпрд╛ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╣реИрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛-рдХрдо-рдЧреБрдг рдПрд╕рдПрд╕рдЖрд░ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХреЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди -рд▓реЗрд╕-рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХреЛ setAttribute () рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЭрдВрдбреЗ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ:
propName1: T.Property | T.Attribute,
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рд╕реЗ рдЕрд▓рдЧ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреИрдорд▓рдХреЗрд╕ рд╕реЗ рдбреИрд╢-рдХреЗрд╕)ред рди рд╣реА рдпрд╣ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореГрджреНрдз рд╡рд╕реНрддреБ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ ("[рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ]" рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ)ред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдк рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рднреА рдЗрд╕рд╕реЗ рд╕рд╣рдордд рд╣реВрдБ, рдЗрд╕рд▓рд┐рдП рдЕрдиреБрд╡рд░реНрддреА рдЯрд┐рдкреНрдкрдгреА ред рдЗрд╕рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЭрд┐рдЭрдХ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдореЗрд░реЗ рдкрд╣рд▓реЗ рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдХрдо рд╡рд░реНрдмреЛрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ:
const XFoo = ReactDOM.createCustomElementType('x-foo', {
UNREFLECTED_ATTRIBUTES: [
'my-attr-1',
'my-attr-2',
],
UNREFLECTED_PROPERTIES: [
'myProp1',
'myProp2',
],
REFLECTED_PROPERTIES: {
// This is default casing conversion, so could be omitted.
someVeryLongName1: 'some-very-long-name-1',
// In case anyone is still using all lowercase without dashes.
someVeryLongName2: 'someverylongname2',
// When needing to define a function for serializing a property to an attribute.
someRichData: ['some-rich-data', JSON.stringify],
},
});
рдФрд░ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рдмрд▓реНрдХрд┐ рдХреБрдЫ рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдбреИрд╢-рдХреЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ @effulgentsia
рдореБрдЭреЗ рдЖрдкрдХрд╛ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдкрд╕рдВрдж рд╣реИ рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рд╕рдВрдпреЛрдЬрди рд╡рд┐рд╕реНрдлреЛрдЯ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЕрдзрд┐рдХ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд▓рд╛ рдШрдЯрдирд╛рдПрдВ + рдЬреЛ рдХреБрдЫ рднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ?
- UNREFLECTED_ATTRIBUTES
- UNREFLECTED_PROPERTIES
- UNREFLECTED_EVENTS
- REFLECTED_PROPERTIES_ATTRIBUTES
- REFLECTED_PROPERTIES_EVENTS
- REFLECTED_ATTRIBUTES_EVENTS
- REFLECTED_PROPERTIES_ATTRIBUTES_EVENTS
...
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЛ рдХрд┐рд╕реА рдкреНрд░реЛрдк рдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ ЁЯдФ рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рдкреНрд░реЛрдк рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рд╡рд╣реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдирдХреА рдЖрдк рдирдХрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд░рд┐рдПрдХреНрдЯ рдФрд░ рд╡реЗрдм рдХрдВрдкреЛрдиреЗрдВрдЯ рд╕рдореБрджрд╛рдп рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдкрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╣рд╛рдБ рдПрдХ рд░рд╛рдп рд░рдЦрдиреЗ рд╕реЗ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЕрдкрдирд╛рдиреЗ рдФрд░ рд╡рдЬрди рдХреЗ рдХрд╛рд░рдг рдЗрд╕рдХреА рд░рд╛рдп рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рдХрд▓реНрдк 4 рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрд╛ рд╣реИ, рдореИрдВ рд╣рдореЗрд╢рд╛ рдЧреБрдгреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЧреБрдгреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реВрдВред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдореИрдВ рд╡рд┐рдХрд▓реНрдк 1 рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк 2 рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред
рд╡рд┐рдХрд▓реНрдк 1 рдЖрджрд░реНрд╢ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЧреБрдг (рдПрд░рд┐рдпрд╛ / рдбреЗрдЯрд╛) рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрдорд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдпрджрд┐ рдХреЛрдИ рдХрд┐рдирд╛рд░реЗ-рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рддрддреНрд╡реЛрдВ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╕рдВрдкрддреНрддрд┐, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдПрдХ рдХреЛ рд▓рд╛рдЧреВ рди рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк 2 рдмреЗрд╣рддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдпрд╣ рдЙрди рд╕рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкрд░рд┐рднрд╛рд╖рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрдВрдЬреАрдХреГрдд рд╣реИ (рдпрд╛ рдЧреБрдг рд╕реЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡ рдХрд▓рд╛ Preact (cc @developit) рд╣реИ рдФрд░ рдЗрд╕рдиреЗ рдЕрдм рддрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдкрде рдкрд░ рдиреАрдЪреЗ рдЬрд╛рдиреЗ рд╕реЗ рдПрдХ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдордЬрдмреВрдд, рдЧреИрд░-рдмреНрд░реЗрдХрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдлрд▓ рд░рд┐рдПрдХреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рд╕рд┐рджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреБрдЫ рднреА рд╣реЛ, рддреЛ рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдПрдХ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рджреЗрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рджреАрд░реНрдШрд╛рд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП (рд╕реНрдерд┐рддрд┐ s ?) рдЬрд╣рд╛рдВ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕реНрдердЧрд┐рдд рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ - рдПрдХ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рдЬреИрд╕реЗ рдХрд┐ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдбреЛрдо рдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ @effulgentsia рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ x
рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдЗрд╕реЗ рдкреНрд░рддрд┐-рдХрд╕реНрдЯрдо-рддрддреНрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЕрднреА рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдп рд╣реИред рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдПрдХ рд░рд╛рдп рд░рдЦрдиреЗ, рд╣реИрдЪ рд╕реЗ рдмрдЪрдиреЗ рдФрд░ рд╕рднреА рдПрдЬ-рдХреЗрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╕реМрдВрдкрдХрд░ рд╕рднреА рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рднреА рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ @Developit рдХреЗ рд╕рд╛рде Preact рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИред Preact/React рдХреЗ рдмреАрдЪ рд╕рдВрд░реЗрдЦрдг рдпрд╣рд╛рдБ рдПрдХ рдмрдбрд╝реА рдЬреАрдд рд╣реЛрдЧреАред
рднрд╡рд┐рд╖реНрдп рдХреЗ HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рдВрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЙрди
ReactDOM.defineCustomElementProp()
рдХреЙрд▓ рдХреЛ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП JS рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╣ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) рд╕реЗ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреЛрдЭ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрди рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреА рдХрд░рдирд╛ рд░рд╛рдЬрдиреАрддрд┐ рдХреА рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХреЛрдИ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред
рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдЙрди рдЧреБрдгреЛрдВ/рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдХреЛрдб рдФрд░ рдЕрдзрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдкреВрд░реНрдг рд╣реИред
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рддрд░реНрдХ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЙрди рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдпреВрдПрдХреНрд╕ рд╣реИ рдЬреЛ рдПрдХ рдмрд╛рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдкрд╣рд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рд╡реЗрдм рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд╕рд┐рдЧрд┐рд▓ (рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ) рдЬреЛрдбрд╝рдиреЗ рдЬрд┐рддрдирд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдХреЗ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдЙрд╕ рдШрдЯрдХ рдХреА рд╣рд░ рдПрдХ рдХреЙрд▓рд╕рд╛рдЗрдЯред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рд╡реЗрдм рдШрдЯрдХ рдЕрдкрдирд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЧреБрдгреЛрдВ/рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЕрдВрддрд░ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХрд▓ рд╕рд╛рдЭрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рдРрдк рдХреЗ рднреАрддрд░ рдЙрд╕ рдШрдЯрдХ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рд╣рдо рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдореИрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд╣рд╛рдВ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдирд╛рдо рдмрдирд╛ рд╕рдХреЗрдВред рдПрдХ рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рд░реИрдкрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдЧреНрд░реЗрдб рдкрде, рдпрджрд┐ рдХрд┐рд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рднреА рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХреНрд╕рдлреВ рдХреЛ рдХрд╕реНрдЯрдо рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЬреЛ рднреА рдлреИрдВрд╕реА рдЕрдиреБрд╡рд╛рдж рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЙрд╕реЗ рдХрд░рддрд╛ рд╣реИред
рдореВрд▓ рд░реВрдк рд╕реЗ: рдпрджрд┐ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдХрд┐рд╕реА рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдореИрдВ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╡рд┐рдХрд▓реНрдк 5 рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рдЪреАрд▓рд╛ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде 3 рдФрд░ 4 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рд╣реИред
рд╡рд┐рдХрд▓реНрдк 1 рдФрд░ 2 рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ (рдПрдЪрдЯреАрдПрдордПрд▓ рдкреАрдврд╝реА) рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рдХрд▓реНрдк 2 рд╡реЗрдм рдШрдЯрдХ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдЧреНрд░реЗрдб рдЦрддрд░реЗ рднреА рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЕрдм рдореМрдЬреВрджрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдпрджрд┐ рд╣рдо рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ SSR рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╡рд┐рдХрд▓реНрдк 1 рдмрд╣реБрдд рдЖрдХрд░реНрд╖рдХ рд╣реИред рдореИрдВ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБ рдЕрдЧрд░ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╡реНрдпрд╛рдкрдХ рд╣реЛрдЧрд╛ - рдХреНрдпрд╛ рдШрдЯрдХ рд▓реЗрдЦрдХ рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ?
bikeshedding рдореЗрдВ рдмрд╣реБрдд рдЧрд╣рд░рд╛ рд╣реЛ рд░рд╣реА рдмрд┐рдирд╛ @treshugart, рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдЕрдм рдмрдЪрдиреЗ рдХрд╛" рдЙрдореНрдореАрдж рдереА рд╣реИрдВ? рдЫрджреНрдо рдХреЛрдб рдареАрдХ рд╣реИред рдмрд╕ рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдм рдПрдХ рд╣реА рдкреГрд╖реНрда рдкрд░ рд╣реИрдВред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ @sophiebits рдЕрднреА рдЖрдкрдХрд╛ рдЙрддреНрддрд░ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдХреБрдЫ рдФрд░ рдмрд╛рд░ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдирдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░ рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
рдореИрдВ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБ рдЕрдЧрд░ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╡реНрдпрд╛рдкрдХ рд╣реЛрдЧрд╛ - рдХреНрдпрд╛ рдШрдЯрдХ рд▓реЗрдЦрдХ рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ?
рдкреЙрд▓рд┐рдорд░ рдпрд╛ рд╕реНрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рдШрдЯрдХ рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдЧрд╛ред рдХреБрдЫ рджреБрд░реНрд▓рдн рдЖрдЙрдЯрд▓реЗрдпрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓ рдпрд╛ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рдирд╛) рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рд╣рдореЗрд╢рд╛ рдЧреБрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрддреА рд╣реИрдВред рдореБрдЭреЗ рдкреВрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЗрди-рдкреНрд░реЛрдбрдХреНрд╢рди рд╡реЗрдм рдШрдЯрдХ рдЗрди рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред
рдЕрдЧрд░ рдХреЛрдИ рд╡реИрдирд┐рд▓рд╛ рд╡реЗрдм рдШрдЯрдХ рдХреЛ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ рддреЛ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдо рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдРрд╕рд╛ рдХрд░реЗрдВ ред
рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд░реНрдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдЬреЛ рдЪрд╛рд╣реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдврд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЙрд▓рд┐рдорд░ рдпрд╛ рд╕реНрдХреЗрдЯ рдЬреИрд╕реЗ рдЕрдореВрд░реНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЧреБрдг рдПрдкреАрдЖрдИ рдореБрдлреНрдд рдореЗрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рддрдм рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЧреБрдг рд╣рдореЗрд╢рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдЖрджрд┐рдо рд╕рдВрдкрддреНрддрд┐ рдирд╛рдореЛрдВ рдХреЗ рд╡рд┐рдХрд▓реНрдк 5-рд╢реИрд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ рдЬреЛ рдЕрдкрдиреЗ рдРрдкреНрд╕ рдореЗрдВ рдПрд╕рдПрд╕рдЖрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
@ рд╕реЛрдлреАрдмрд┐рдЯреНрд╕ : рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдРрдкреНрд╕ рд▓рд┐рдЦреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
<x-foo long-name={val} />
рд▓реЗрдХрд┐рди "рдЧреБрдг рдХрд░реЗрдВ" рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдпрджрд┐ рдкреНрд░реЛрдкрдирд╛рдо рдореЗрдВ рдбреИрд╢ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ "рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХрд░реЗрдВ"?
@robdodson : рдХреНрдпрд╛ рдЖрдк рд╡рд╣рд╛рдВ рдХрд┐рд╕реА рднреА рдХрд╕реНрдЯрдо рддрддреНрд╡ рдврд╛рдВрдЪреЗ рдпрд╛ рдкреНрд░рдерд╛рдУрдВ рд╕реЗ рдЕрд╡рдЧрдд рд╣реИрдВ рдЬрд╣рд╛рдВ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд╡рд░рдг рд╣реЛрдВрдЧреЗ, рдмрд┐рдирд╛ рдбреИрд╢ рдХреЗ? рдпрд╛рдиреА, longname
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде longName
рд╕рдВрдкрддреНрддрд┐? рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд HTML рддрддреНрд╡реЛрдВ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ (рдЬреИрд╕реЗ, contenteditable
=> contentEditable
) рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдм рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рд╣реИ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреЙрд▓рд┐рдорд░ рдФрд░ рд╕реНрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрджрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рддреЛ рдореМрдЬреВрджрд╛ JSX рдХреЗ рд╕рд╛рде:
<x-foo longname={val} />
рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ longName
ред
@effulgentsia рдореИрдВ рдХреЗрд╡рд▓ рд╕реНрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдмреЛрд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ HTML рд▓рд┐рдЦрддреЗ рд╕рдордп рд╡рд┐рд╢реЗрд╖рддрд╛ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ - рд╕рднреА рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдФрд░ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП - рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк JS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рднреА рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░реЙрдкреНрд╕ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░рд╛ props
рдПрдкреАрдЖрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдПрдХ-рддрд░рдлрд╝рд╛ рд╕рд┐рдВрдХ / рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХреЛ рдбреИрд╢-рдХреЗрд╕ рдХрд░рдХреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (CamelCase рдКрдВрдЯ-рдХреЗрд╕ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдЖрджрд┐)ред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рд▓реЗрдХрд┐рди рд╣рдо рдЙрдкрд░реЛрдХреНрдд рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдХрд╣рд╛ рд╣реИ, рдкреНрд░реЙрдкреНрд╕ SSR рдХреЛ рдХрдард┐рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдПрдХ рд╡реИрдз рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред рдЪреВрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдХрд▓реНрдк 1 рдХреЛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдлрд╝реЙрд▓рдмреИрдХ/рдореИрдкрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реБрдП рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреНрд░реЙрдкреНрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ @sophiebits рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЖрдЧреЗ
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрдХреЗрдЯ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдХреЛрдИ рднреА рдХрд╕реНрдЯрдо рддрддреНрд╡ рдЬреЛ renderedCallback()
рдФрд░ props
рдФрд░ / рдпрд╛ state
рдмрд╕рддрд╛ рд╣реИред рдХрд╕реНрдЯрдо рддрддреНрд╡ рд╕реНрддрд░ рдкрд░ рдРрд╕рд╛ рдХрд░рдирд╛ рддреБрдЪреНрдЫ рд╣реИред рдпрджрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рд╕рдбрд╝рдХ рд╕реЗ рдиреАрдЪреЗ рдЪрд▓реА рдЧрдИ, рддреЛ рдкреБрдирд░реНрдЬрд▓реАрдХрд░рдг рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред рд╕реНрдХреЗрдЯ рдШрдЯрдХ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдХрд░рддреЗ рд╣реИрдВ ' рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдХреНрд░рдорд╛рдВрдХрди рддрд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред
@robdodson рдореИрдВ
const isBrowser = true; // this would actually do the detection
const oldAttributeHook = ReactDOM.setAttribute;
// This is much like the IDOM impl but with an arguably more clear name.
ReactDOM.setAttribute = (element, name, value) => {
// This is essentially option 2, but with the added browser check
// to keep attr sets on the server.
if (isBrowser && name in element) {
element[name] = value;
} else {
oldAttributeHook(element, name, value);
}
};
@ рд╕реЛрдлреАрдмрд┐рдЯреНрд╕
рд╡рд┐рдХрд▓реНрдк 2 рд╡реЗрдм рдШрдЯрдХ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдЧреНрд░реЗрдб рдЦрддрд░реЗ рднреА рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЕрдм рдореМрдЬреВрджрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реА рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рдЙрд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП рдпрд╣ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдПрд╕рдПрд╕рдЖрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЖрдк рдЬреЛрдЦрд┐рдо рднреА рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рдирд╛рдорд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╢рд┐рдк рдХрд░реЗрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ @treshugart рдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ , рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреБрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ (рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп) рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╢рдХреНрдд рд╣реИред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ TPAC рдореЗрдВ рд╡реЗрдм рдШрдЯрдХ рдХрд▓реНрдкрдирд╛ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд╕реНрдерд╛рди рдореЗрдВ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╡рд┐рдХрд▓реНрдк 2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдХрд▓реНрдк 2 рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рдмреЛрдирд╕ рд╣реИрдВ рдФрд░ рдкреНрд░реАрдПрдХреНрдЯ рдЗрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕рд╛рдмрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рддрдм рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЧреБрдг рд╣рдореЗрд╢рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдЖрджрд┐рдо рд╕рдВрдкрддреНрддрд┐ рдирд╛рдореЛрдВ рдХреЗ рд╡рд┐рдХрд▓реНрдк 5-рд╢реИрд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ рдЬреЛ рдЕрдкрдиреЗ рдРрдкреНрд╕ рдореЗрдВ рдПрд╕рдПрд╕рдЖрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
+1, рдореИрдВ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реВрдВред
@effulgentsia
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдРрдкреНрд╕ рд▓рд┐рдЦреЗ рд╣реИрдВред
рд╡рд┐рдХрд▓реНрдк 2 рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛ :)
рдЕрдиреНрдпрдерд╛ рд╢рд╛рдпрдж рд╡рд┐рдХрд▓реНрдк 1 рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрдорд╛рдиреА рдпреБрдЧреНрдорд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдХрд┐ рдбреИрд╢-рдЖрд╡рд░рдг рд╡рд╛рд▓реЗ рдЧреБрдгреЛрдВ рдХреЛ рдХреИрдорд▓рдХреЗрд╕реЗрдб рдЧреБрдгреЛрдВ рдореЗрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди "рдЧреБрдг рдХрд░реЗрдВ" рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдпрджрд┐ рдкреНрд░реЛрдкрдирд╛рдо рдореЗрдВ рдбреИрд╢ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ "рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХрд░реЗрдВ"?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдо рдореЗрдВ рдбреИрд╢ рд╣реЛрдиреЗ рдкрд░ Preact рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░ рджреЗрдЧрд╛ ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡рд┐рдХрд▓реНрдк 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ long-name
in
рдЪреЗрдХ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ ( рд╕реНрд░реЛрдд ) рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред
рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @ рд╕реЛрдлреАрдмрд┐рдЯреНрд╕ рдХрд╛ рд╡рдЬрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рдРрд╕реЗ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдврд╛рдВрдЪреЗ рдпрд╛ рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд╡рд░рдг рд╣реЛрдВрдЧреЗ, рдмрд┐рдирд╛ рдбреИрд╢ рдХреЗ?
рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдирд╣реАрдВред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдКрдВрдЯ рдХрд╛ рдорд╛рдорд▓рд╛ рдХрд╣рд╛рдВ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рд╡реЗрдирд┐рд▓рд╛ рд╡реЗрдм рдШрдЯрдХ рдХреЛ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦ рд░рд╣реЗ рдереЗ рддреЛ рдЖрдк longname/longName
рдФрд░ рдХреЗрд╡рд▓ рд╡рд┐рдХрд▓реНрдк 2 рдЖрдкрдХреЛ рдмрдЪрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ longname
рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ longname
рд╡рд┐рд╢реЗрд╖рддрд╛ред
рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реАрдПрдХреНрдЯ, рдЕрдВрддрд┐рдо рдЙрдкрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрд╕ рд╕рдВрдкрддреНрддрд┐ рдкрд░ toLowerCase()
рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ рд╡рд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ <x-foo longName={bar}/>
SSR'ing рдХрд░ рд░рд╣реЗ рдереЗ рддреЛ рдпрд╣ longname=""
рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рднреА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред
@treshugart
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдлрд╝реЙрд▓рдмреИрдХ/рдореИрдкрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реБрдП рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреНрд░реЙрдкреНрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ @sophiebits рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдЖрдЧреЗ
рд╣рд╛рдБ, рдФрд░ рд╣рд╛рдБред
рдореИрдВ рд╡рд╣реА рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдбреЛрдо рдХрд░ рд░рд╣рд╛ рд╣реИ
рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ (рдпрд╛ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ) рдХреЛ рдЗрд╕рдореЗрдВ рдорд┐рд╢реНрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА?
рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдЪрд░реНрдЪрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ тЭдя╕П
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ https://github.com/facebook/react/issues/11347#issuecomment -339858314 рдореЗрдВ рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рддрд░рд╣ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред
@gaearon рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреНрд░реЗ рд╕рд┐рд░реНрдл рдмрдВрджрд░-рдкреИрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрджреНрдз рдкрд░рд┐рд╡рд░реНрддрди рджрд┐рдЦрд╛ рд░рд╣рд╛ рдерд╛, рд╕рдВрднрд╡рддрдГ рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯрдбреЙрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╣реА рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╣рд╛рд▓ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рд╕рднреА рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?
рдмреАрд╕реА рдХреЗ рд▓рд┐рдП, рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд▓реЛрдЕрд░рдХреЗрд╕ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рди рдмрджрд▓реЗрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, JSX рдЬреИрд╕реЗ <x-foo ... />
, React 17 рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ 16 рдореЗрдВ рдерд╛ред рдпрд╛, рдпрджрд┐ _minor_ рдмрдЧ рдлрд┐рдХреНрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рддреЛ рдЙрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред
рдмреЗрд╣рддрд░ рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯ рд╕реЗрдореЗрдиреНрдЯрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд░рд┐рдПрдХреНрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд┐рдЧ-рд▓реЗрд╕ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВред рдЬреИрд╕реЗ, const XFoo = ReactDOM.customElement('x-foo');
ред
рдКрдкрд░ рдмрдирд╛рдП рдЧрдП рдШрдЯрдХ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЛ рдирд┐рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ:
children
, ref
, рдХреЛрдИ рдЕрдиреНрдп?), рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд░рд┐рдПрдХреНрдЯ рд╢рдмреНрджрд╛рд░реНрде рд▓рд╛рдЧреВ рдХрд░реЗрдВ (рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рди рдХрд░реЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдбреЛрдо рдиреЛрдб рдкрд░)редdata-*
рдФрд░ aria-*
), рдЙрди рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд╣реА рдХрд░реЗрдВ рдЬреЛ React рдЙрдирдХреЗ рд╕рд╛рде рдХрд░реЗрдЧрд╛ рдпрджрд┐ рд╡реЗ div
рдкрд░ рдереЗ <XFoo data-x={} className={} contentEditable={} />
рдкрд░ DOM рдиреЛрдб рдкрд░ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ <div data-x={} className={} contentEditable={} />
(рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдФрд░ SSR рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП) рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредXFoo рдкрд░ рдЕрдиреНрдп рд╕рднреА рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕реЗ DOM рдиреЛрдб рдкрд░ рдПрдХ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред SSR рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдорд╛рди рдЖрджрд┐рдо рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ; рдпрджрд┐ рдЧреИрд░-рдЖрджрд┐рдо рд╣реИ, рддреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЫреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдПрдХ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ SSR рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП, camelCaseToDashCase рдирд╛рдоред
рдКрдкрд░ #2 рдореЗрдВ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдП рдЧрдП рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдк рдирд╛рдо рдЖрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдВред рдЬреИрд╕реЗ, 'events'
рдпрд╛ 'eventListeners'
ред рдпрд╛, рдпрджрд┐ рдЙрди рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╕реНрдЯрдо рддрддреНрд╡ рд╕рдВрдкрддреНрддрд┐ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ '_eventListeners'
рдпрд╛ 'EventListeners'
ред XFoo
рдХрд╛ рд░рд┐рдПрдХреНрдЯрдбреЙрдо-рдирд┐рд░реНрдорд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрди рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ DOM рдиреЛрдб рдкрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдЧрд╛ред
рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╛рдВрдЫрд┐рдд рдпрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ), рдРрдк рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдЬреЛ рднреА рд╡рд┐рд╢реЗрд╖ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ рдЙрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╛рдиреА, рдЙрдиреНрд╣реЗрдВ ReactDOM.customElement()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рд╡реЗ рдЗрд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╡реНрдпрд╡рд╣рд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ JSX рд▓реЛрдЕрд░рдХреЗрд╕ рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯ рдирд╛рдореЛрдВ ( <x-foo />
рдмрдЬрд╛рдп <XFoo />
, рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ HTML рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧ <div>
рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ <Div>
), рд╡реЗ рдмрдВрджрд░-рдкреИрдЪ React.createElement() рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдмрдВрджрд░ рдкреИрдЪ рд╣реЛрдЧрд╛: рдмрд╕ рдкрд╣рд▓рд╛ рддрд░реНрдХ рд▓реЗрдВ рдФрд░ рдпрджрд┐ рдпрд╣ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЪрд╛рд╣реЗ рд╡рд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реВрдЪреА рд╣реЛ рдпрд╛ рд╕рднреА рд▓реЛрдЕрд░рдХреЗрд╕ рдЕрдХреНрд╖рд░реЛрдВ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдбреИрд╢ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ), рддреЛ ReactDOM.customElement()
рдЖрд╣реНрд╡рд╛рди рдХрд░реЗрдВ рдЙрд╕ рдирд╛рдо рдкрд░ React.createElement()
рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВред
@Developit @gaearon рдпрд╣ рдпрд╛ рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ "рдорд╛рдирдЪрд┐рддреНрд░рдг" рдЖрд╡рд╢реНрдпрдХ рдерд╛, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реБрдХ рдЕрдзрд┐рдХ рдЯрд┐рдХрд╛рдК рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╢реБрджреНрдз рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рджрд┐рдЦрд╛рдирд╛ рднреА рдерд╛ рдпрджрд┐ рдЗрд╕реЗ ReactDOM рдХреЗ рдореВрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЬреЗрд╕рди рдиреЗ рдмрддрд╛рдпрд╛ред
рдмреАрд╕реА рдХреЗ рд▓рд┐рдП, рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд▓реЛрдЕрд░рдХреЗрд╕ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рди рдмрджрд▓реЗрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, JSX рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ
рд░рд┐рдПрдХреНрдЯ 17 рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ 16 рдореЗрдВ рдерд╛ред рдпрд╛, рдпрджрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдореВрд▓реА рдмрдЧ рдлрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЙрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ <x-foo>
рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕реЗ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЧреБрдгреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░ рджреВрдВрдЧрд╛ред
рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдореИрдВ рд╡рд┐рдХрд▓реНрдк 1 (рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдЧреБрдг) рдФрд░ 5 (рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди) рдХреЗ @sohpiebits ' рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рд╛рде рдЬрд╛рдКрдВрдЧрд╛ ред рдореИрдВ рдЕрднреА рднреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╢рд╛рдпрдж рд▓реЛрдЧ рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдмреЛрдирд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк 2 (рд╢рд╛рдпрдж рд╡рд┐рдХрд▓реНрдк 2 + 5?) рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
@gaearon рдХреНрдпрд╛ рдЖрдкрдХреА рд░рд╛рдп рдЯреНрд░реЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ рдпрджрд┐ рдпрд╣ ReactDOM рдХреЛрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ? рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдорджрдж рдХрд░реЗрдВрдЧреЗ рддреЛ рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЛ рдФрд░ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ?
рд╡рд┐рдХрд▓реНрдк 5 рдХреЗ рд╕рд╛рде рдореЗрд░реА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдмрдирд╛ рд░рд╣реА рд╣реИ, рдбреАрдПрдХреНрд╕ рдХреЛ рддреЛрдбрд╝рдирд╛, рд╕рднреА рд░рд┐рдПрдХреНрдЯ рдХреЛрд░ рдЯреАрдо рдФрд░ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдирд╛ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реЛрдЧреА рдЬрд┐рдирдХрд╛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдиреЗ рд░реЗрдкреЛ рдореЗрдВ рдЕрдВрддрд┐рдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рд╛, рдЬреИрд╕реЗ рдХрд┐ _PropTypes_, рдХреЗрд╡рд▓ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрд╡рд┐рдЪ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХрд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рддрддреНрд╡
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдЬреЛ рд╣рдо рд╕рднреА рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░реЗрдЧрд╛, рд╡рд╣ рд╣реЛрдЧрд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ _steps_, рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝, рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рдмрд╣рд┐рд╖реНрдХрд░рдг рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ред
рд╢рд╛рдпрдж рд╡рд┐рдХрд▓реНрдк 5, рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде, рдмрд╛рдж рдореЗрдВ рд╡рд┐рдХрд▓реНрдк 2 рдЖрд╡рд╢реНрдпрдХ рдЖрд╡рд░рдг рдХреЗ рдмрд╣рд┐рд╖реНрдХрд░рдг рдХреЗ рд╕рд╛рдеред
рд╢рд╛рдпрдж рд╡рд┐рдХрд▓реНрдк 5, рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде, рдмрд╛рдж рдореЗрдВ рд╡рд┐рдХрд▓реНрдк 2 рдЖрд╡рд╢реНрдпрдХ рдЖрд╡рд░рдг рдХреЗ рдмрд╣рд┐рд╖реНрдХрд░рдг рдХреЗ рд╕рд╛рдеред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд░рдирд╛ рдХрджрдореЛрдВ рдХреА рдПрдХ рдмреЗрд╣рддрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реЛрдЧреАред рд╡рд┐рдХрд▓реНрдк 1 рдпрд╛ 2 рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдо рдирд╛рдЯрдХреАрдп рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдФрд░ рдпрд╣ рдорд╛рдкрдирд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП SSR рдХрд╣рд╛рдиреА рдХреИрд╕реА рджрд┐рдЦрдиреЗ рд▓рдЧрддреА рд╣реИред рдлрд┐рд░ рд╡рд┐рдХрд▓реНрдк 5 рдХреЗ рд╕рд╛рде рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдирдпрд╛ рдПрдкреАрдЖрдИ рдФрд░ рдкреНрд░реЙрдХреНрд╕реА/рд░реИрдкрд░ рдШрдЯрдХреЛрдВ рдХреА рдзрд╛рд░рдгрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк 1 рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдмрдбрд╝рд╛ BC рдмреНрд░реЗрдХ рд╣реИред рд╡рд┐рдХрд▓реНрдк 2 рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рддрддреНрд╡ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕рдХреА рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк 5 рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЙрдкрдпреЛрдЧреА, рдЧреИрд░-рд╡рд┐рдХрд▓реНрдк -5 рдЙрдкрдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд▓реНрдк 4 рдХреЗ рд╡реНрдпреБрддреНрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ: рдмрд╕ domProperties
рдФрд░ eventListeners
рдкреНрд░реЛрдк рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВ, рддрд╛рдХрд┐ рдЖрдк рд╕рд╛рдорд╛рди рдХрд░ рд╕рдХреЗрдВ:
<x-foo
my-attr1={...}
domProperties={{myRichDataProperty: ...}}
eventListeners={{'a-custom-element-event': e => console.log('yo')}}
/>
рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдЕрдкрд░рдХреЗрд╕ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдХрд╛рд░рдг, domProperties
рдФрд░ eventListeners
рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдирд╣реАрдВ рд╣реИрдВред рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд░рд┐рдПрдХреНрдЯ 16 рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реЗрдЯрдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ () рдХреЛ рдКрдкрд░реА рдЕрд▓реНрдлрд╝рд╛рдЬрд╝ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдк рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдирд╛рдо рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ; рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреНрдпрд╛ рд░рд┐рдПрдХреНрдЯ 16 рдХреА рднрд╡рд┐рд╖реНрдп рдХреА рдорд╛рдореВрд▓реА рд░рд┐рд▓реАрдЬ рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯ рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░ рд╕рдХрддреА рд╣реИ рдЬреЛ рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдирд╣реАрдВ рд╣реИрдВ, рддрд╛рдХрд┐ рд▓реЛрдЧ рд░рд┐рдПрдХреНрдЯ 17 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреА рдХреЗрд╕рд┐рдВрдЧ рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХреЗрдВ?
рдмреАрд╕реА рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ: рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛-рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ (рдЕрд░реНрдерд╛рддреН рд░рд┐рдПрдХреНрдЯ рдкреНрд░реЛрдк рдХреЛ рддрддреНрд╡ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЬреЛ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡ рдХрд╛ рдирд╛рдо рд╕рднреА рд▓реЛрдЕрд░рдХреЗрд╕ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдбреИрд╢ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП HTML-рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, domProperties
рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЧреБрдг рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рд╕рдореГрджреНрдз рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЬреЛ рд▓реЛрдЧ рдЕрдкрдиреЗ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдХреЛ рд╕рдВрдкрддреНрддрд┐-рдХреЗрдВрджреНрд░рд┐рдд (рдЕрд▓рд╛ рд╡рд┐рдХрд▓реНрдк 1) рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк 5 рд╕реНрдЯрд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдЖ рд╕рдХрддрд╛ рд╣реИ:
const XFoo = ReactDOM.customElement('x-foo');
<XFoo prop1={} prop2={} data-foo={} aria-label={} />
рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдк рдХреЛ рдПрдХ рд╕рдВрдкрддреНрддрд┐ (рд╡рд┐рдХрд▓реНрдк 1) рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрддреНрд╡ "рдирд╛рдо" (рдПрдХреНрд╕рдлреВ) рднреА рдЬреЗрдПрд╕-рдХреЗрдВрджреНрд░рд┐рдд рд╕рдореНрдореЗрд▓рди рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрднреА рднреА рдиреНрдпреВрдирддрдо рд╕рдорд░реНрдерди data-*
рдФрд░ aria-*
рдкреНрд░реЛрдк рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдпрд╛ рддреЛ рдХреЗрд╡рд▓ рдЙрди рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдк рдХреЛ рдбреИрд╢ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЧреБрдгред
рдЗрд╕ рдмреАрдЪ, SSR рдХреЗ рд╡рд┐рдХрд▓реНрдк 5 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди API рдХреЛ ReactDOM.customElement
рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:
const XFoo = ReactDOM.customElement('x-foo', ssrConfiguration);
рд╢рд╛рдпрдж ssrConfiguration
@treshugart рдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ ReactDOM.setAttribute
рд╕рдорд╛рди рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?
@effulgentsia рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рдХрд╣рд╛рдБ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдирд╛рдореЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмрд╛рдЗрдХрд╢реЗрдб рдХрд░рдирд╛: domProps
/ domEvents
ред рдпрд╣ рд╡рд┐рдХрд▓реНрдк 4 рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИред
рдбрдмреНрд▓реВрдЖрд░рдЯреА рдПрд╕рдПрд╕рдЖрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд╕рдПрд╕рдЖрд░ рдХреЛ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдпрдВ рддрдм рддрдХ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рд░рд┐рдПрдХреНрдЯ рдЙрди рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдШрдЯрдХ рд╕реНрд╡рдпрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рд╛рд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╣реИ: https://gist.github.com/treshugart/6eff0da3c0bea886bb56589f743b78a6ред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдШрдЯрдХ рд╕рд░реНрд╡рд░ рдкрд░ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд░реАрд╣рд╛рдЗрдбреНрд░реЗрдЯ рдХрд░рддрд╛ рд╣реИред рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП SSR рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╛рдзрд╛рди рдкрд░ рдЕрднреА рднреА рдорд╛рдирдХ рд╕реНрддрд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
@effulgentsia рдореБрдЭреЗ рдпрд╣ рднреА рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдЖрдк рдХрд╣рд╛рдБ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред @sophiebits , @gaearon do
рдЖрдк рд╕рднреА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ?
рдордВрдЧрд▓рд╡рд╛рд░, 31 рдЕрдХреНрдЯреВрдмрд░, 2017 рдХреЛ рд╢рд╛рдо 7:33 рдмрдЬреЗ рдЯреНрд░реЗ рд╢реБрдЧрд╛рд░реНрдЯ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
@effulgentsia https://github.com/effulgentsia рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХрд╛
рд╡рд┐рдЪрд╛рд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдирд╛рдореЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмрд╛рдЗрдХрд╢реЗрдб рдХрд░рдирд╛, рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдЙрдирдХреЗ рдирд╛рдордХрд░рдг рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВ: domProps / domEvents, рдпрд╛ рдХреБрдЫ рдФрд░редрдбрдмреНрд▓реВрдЖрд░рдЯреА рд╡рд┐рдХрд▓реНрдк 2, рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдкрд┐рдЫрдбрд╝рд╛ рд╕рдВрдЧрдд рд╣реИ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ,
рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЖ рд░рд╣рд╛ рд╣реВрдБредрдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд╕рдПрд╕рдЖрд░ рдХреЛ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдпрдВ рддрдм рддрдХ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрди рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░ рд╕рдХрддреА рд╣реИ рдЬреЛ рдШрдЯрдХ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдпрджрд┐ рдпрд╣ рд╣реИ
рдЙрдиреНрд╣реЗрдВ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рд╛рд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐
рд╕реБрд╡рд┐рдзрд╛:
https://gist.github.com/treshugart/6eff0da3c0bea886bb56589f743b78a6ред
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдШрдЯрдХ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рдмрд╛рдж рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд░реАрд╣рд╛рдЗрдбреНрд░реЗрдЯ рдХрд░рддрд╛ рд╣реИред рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП SSR рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди
рд╕рдорд╛рдзрд╛рди рдЕрднреА рднреА рдорд╛рдирдХ рд╕реНрддрд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/facebook/react/issues/11347#issuecomment-340960798 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/ABBFDeiQhBWNGXNplbVV1zluYxT-ntFvks5sx9hngaJpZM4QD3Zn
.
рдирд╛рдореЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдмрд╛рдЗрдХрд╢реЗрдб рдХрд░рдирд╛: рдбреЛрдордкреНрд░реЙрдкреНрд╕ / рдбреЛрдордЗрд╡реЗрдВрдЯреНрд╕ред
рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ "рд░реЗрдл" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде "рдбреЛрдо" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдмрджрд▓рдХрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рддреЛ рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ: refProps
/ refEvents
, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкреНрд░реЛрдк рдФрд░ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ "рд░реЗрдлрд░реА" рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВред
рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ this.props
рдЕрдВрджрд░ рдирдП рд╡рд┐рд╢реЗрд╖ рдирд╛рдореЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдореМрдЬреВрджрд╛ ref
JSX рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░ рджреЗрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, "рд░реЗрдлрд░реА" рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдорд╛рдЙрдВрдЯ рдФрд░ рдЕрдирдорд╛рдЙрдВрдЯ рд╣реЛрдиреЗ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЕрдиреБрдорддрд┐ рджреЗрдВ:
<x-foo my-attr-1={}
ref={{
props: ...
events: ...
mounted: ...
unmounted: ...
}}
/>
рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИред
рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╕рдВрдж рд╣реИ :)
рдЗрд╕ рдкрд░ рджреЛрд╕реНрддрд╛рдирд╛ рдкрд┐рдВрдЧред @gaearon @sophiebits рдХреНрдпрд╛ рдЖрдк @effulgentsia рдХреЗ рдирд╡реАрдирддрдо рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░
рд╣рдордиреЗ рдЕрднреА рдПрдХ RFC рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЦреЛрд▓реА рд╣реИред рдХреНрдпрд╛ рд╣рдо рдЖрдк рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдЗрд╕реЗ RFC рдХреЗ рд░реВрдк рдореЗрдВ рдЬрдорд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ?
https://github.com/reactjs/rfcs
рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп domProperties
рдФрд░ eventListeners
"props" (рдпрд╛ ref={{}} рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд░рд╛рдмрд░) рдирд╣реАрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╣реА рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рдФрд░ рдЕрдиреНрдп рд╕рднреА рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдШрдЯрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдЖрджрд┐ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдПрдХ ReactDOM.createCustomElementType- рд╢реИрд▓реА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдлрд┐рд░ рдпрджрд┐ рдЖрдк рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдареАрдХ рдПрдХ рдмрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ рддреБрд▓рдиреАрдп рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрд╛рдо рд╣реИ (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛), рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдХрдИ рдмрд╛рд░ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╣рд░ рдмрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ, рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдПрдХреАрдХрд░рдг рд╣реЛрдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рд╣рд░рд╛рдиреЗ рд▓рдЧрддрд╛ рд╣реИред
@sophiebits рдареАрдХ рд╣реИ, рдореИрдВ рдРрд╕рд╛ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд░рдПрдлрд╕реА рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдЖрдк рдЙрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдиреЗ 26 рдЕрдХреНрдЯреВрдмрд░ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд▓рд┐рдП ReactDOM.createCustomElementType рд▓рд┐рдЦрдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреА рдереА рдФрд░/рдпрд╛ рдпрджрд┐ рд╡реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдореИрдкреНрд╕/рдЧреБрдгреЛрдВ рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдврд╝рд┐рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ ?
рдХрдо рд╕реЗ рдХрдо createCustomElementType
рд╢реИрд▓реА рдХреЗ рд╕рд╛рде, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рдЙрд╕рдореЗрдВ рдореИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдиреА, рд╣рдорд╛рд░реЗ рд╕реНрдХреЗрдЯрдЬ/рд░реЗрдВрдбрд░рд░-рд░рд┐рдПрдХреНрд╢рди рдЖрд╕рд╛рдиреА рд╕реЗ props
рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкрддреНрддрд┐рдпрд╛рдВ рд╡реЗрдирд┐рд▓рд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдореВрд░реНрддрддрд╛ рдпрд╛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрдЪреНрдЪ рдФрд░ рд╢реБрд╖реНрдХ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИрдВред рдареАрдХ-рдард╛рдХ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд░реЙрдм рдХрд╛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдкрд╕рдВрдж рд╣реИред рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░реЗрдЧрд╛?
@robdodson рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдмреЛрд░реНрдб рдкрд░ рд╣реВрдВред рдореИрдВ рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдЖрдПрдЧреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрддреБрд▓рди рд╣реИред
рд╡рд┐рдХрд▓реНрдк 3 рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдФрд░ рдпрд╣ SSR рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕рдХрд╛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗред
рдЕрдм рддрдХ рд╕рднреА рд╡рд┐рдХрд▓реНрдк рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ, 3 рдХреЛ рдЫреЛрдбрд╝рдХрд░,
рдпрд╣рд╛рдБ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдирд┐рдпрдо рд╣реИрдВ рдЬрд┐рди рдкрд░ рд╣рдо рд╕рднреА рд╕рд╣рдордд рд╣реИрдВ:
setAttribute
рд╕рд╛рде рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдмреНрд░рд╣реНрдорд╛рдВрдб рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдШреЛрд╖рдгрд╛рддреНрдордХ HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде 1-рд╕реЗ-1 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рдмреНрд░рд╣реНрдорд╛рдВрдб рдХреЗ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ 100% рд╕рдордп рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрддреНрд╡реЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХрдорд╛рддреНрд░ 100% рдЧрд╛рд░рдВрдЯреАрдХреГрдд рддрд░реАрдХрд╛ рд╣реИредрддреЛ, рдХрдо рд╕реЗ рдХрдо, рдЕрдЧрд░ рд░рд┐рдПрдХреНрдЯ рдмреНрд░рд╣реНрдорд╛рдВрдб рдореЗрдВ _рд╣рд░ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рд╕рд╛рде 100% рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛
setAttribute
рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ 100% рдорд╛рдирдХ рд╣реИредsetAttribute
рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░/рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ setAttribute
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдкреНрд░рдореБрдЦ рдЙрджрд╛рд╣рд░рдг рдП-рдлреНрд░реЗрдо рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВредsetAttribute
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛, рдФрд░ рдпрджрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЧреБрдгреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рддреЛ рдкреВрд░рд╛ рдмреНрд░рд╣реНрдорд╛рдВрдб рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред _рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ ifs, ands, рдпрд╛ buts рдирд╣реАрдВ рд╣реИ!_ (рдЬрдм рддрдХ рдХрд┐ w3c/whatwg рдХреБрдЫ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рддрд╛)Sooooooooo , рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╣рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдлрд┐рд░, рд╣рдо рдХрднреА-рдХрднреА рдСрдмреНрдЬреЗрдХреНрдЯ-рдкреНрд░реЙрдкрд░реНрдЯреА рдПрдкреАрдЖрдИ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ:
setAttribute
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдпрд╣ рд╣рд░ рд╕рдордп рдХрд╛рдо рдХрд░реЗрдЧрд╛редрддреЛ, рдЧреБрдгреЛрдВ рдмрдирд╛рдо рдЧреБрдгреЛрдВ рдХреЗ рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде, рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬреЛ _рдмреНрд░рд╣реНрдорд╛рдВрдб рдХреЗ резрежреж% рдорд╛рдирдХ рдФрд░ рд╕рдореНрдорд╛рди рдХрд╛рдиреВрдиреЛрдВ рдХреЛ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ_ рдЪрд╛рд╣рд┐рдП:
<x-foo blah="blah" />
рдХреЛ _рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ_ рдореИрдк рдХрд░рдХреЗ setAttribute
рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдорд╛рди рдХреЛ _unchanged_ рдХреЗ рд╕рд╛рде рдкрд╛рд╕ рдХрд░рдирд╛ "[object Object]"
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджреЗрдЧрд╛редрдпрд╣ рд╡рд┐рдХрд▓реНрдк 3 рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдПрдХ рд╕рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕реАрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ), рдПрдХ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЖрджрд░реНрд╢ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ SO рдкреНрд░рд╢реНрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреЗрд╡рд▓ рдЙрдкрд▓рдмреНрдз рдкреНрд░рддреАрдХ =
, рд╣рд╛рд▓рд╛рдВрдХрд┐ &
(рдПрдХ рдмрдЪрдиреЗ рдпреЛрдЧреНрдп рд░реВрдк рдХреЗ рд╕рд╛рде, рд╢рд╛рдпрдж \&
) рдкрд░ рдмрд╕рдирд╛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд░реЛрдк рдЪрд╛рд╣рд┐рдП:
<x-foo &blah="blah" />
WHATWG HTML рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реНрдкреЗрдХ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдФрд░ рд╡рд┐рд╖рдп рд╣реИред
рд╡рд┐рдХрд▓реНрдк 3 рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред
рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрд╕рдПрд╕рдЖрд░ рдореЗрдВ рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рддреЛ, рдУрд╣ рдареАрдХ рд╣реИред рдЗрд╕рдиреЗ рдкрд╣рд▓реЗ рдХрднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕реЗ рдЕрдм рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред PHP-рд╢реИрд▓реА рдпрд╛ рдЬрд╛рд╡рд╛-рд╢реИрд▓реА SSR рдмрд┐рдирд╛ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЗ рд╕реНрдерд┐рд░ HTML рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рд╡реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ 100% рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рд░рд┐рдПрдХреНрдЯ рдПрд╕рдПрд╕рдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╢рд╛рдпрдж рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдпрджрд┐ рд╣рдо рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдмрд╕ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЕрд╡рдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред _рдпрд╣ рд╕рд░рд▓ рд╣реИред рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рд╣реИред_
рдкрд░рдВрддреБ!!! рд╡рд╣ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рд╣реИрдВ! рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрднреА рднреА рд╡рд┐рдХрд▓реНрдк 5 рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рдХрд▓реНрдк 5 рдЬреИрд╕реЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде,
рдЕрдВрдд рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░реЗрдЧрд╛:
setAttribute
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,рдирд╡рд╡рд░реНрд╖ рдХреА рд╢реБрднрдХрд╛рдордирд╛рдПрдВ!
рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдбрд░ рд╣реИ рдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА _рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ_ рд▓рдВрдмрд╛ рд╣реИред рддреЛ, рдЗрд╕реЗ рд▓рдВрдмрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ: рдкреА
рдпрд╣рд╛рдБ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдирд┐рдпрдо рд╣реИрдВ рдЬрд┐рди рдкрд░ рд╣рдо рд╕рднреА рд╕рд╣рдордд рд╣реИрдВ:
рд╕реЗрдЯ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕реЗрдЯ рдХрд░рдирд╛ рдмреНрд░рд╣реНрдорд╛рдВрдб рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдШреЛрд╖рдгрд╛рддреНрдордХ HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде 1-рд╕реЗ-1 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рдмреНрд░рд╣реНрдорд╛рдВрдб рдХреЗ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ 100% рд╕рдордп рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрддреНрд╡реЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХрдорд╛рддреНрд░ 100% рдЧрд╛рд░рдВрдЯреАрдХреГрдд рддрд░реАрдХрд╛ рд╣реИред
рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЙрддрдиреА рд╣реА рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ JS рдЧреБрдгреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рддреЛ рдпрд╣ "рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдЧрд╛рд░рдВрдЯреАрдХреГрдд рддрд░реАрдХрд╛" рдирд╣реАрдВ рд╣реИред рдкреНрд░рд╡рд░реНрддрди рддрдВрддреНрд░ рдХреА рдХрдореА рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк 100% рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╢реИрд▓реА (HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдпрд╛ JS рдЧреБрдг) рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдХреБрдЫ рд▓реЛрдЧ рдЦреБрд╢ рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХреБрдЫ рддрддреНрд╡ (рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ, рдХреЗрд╡рд▓ рдХреБрдЫ рддрддреНрд╡), рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдореИрдк рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕ рдкрд░ 100% рд╕рдордп рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЙрди рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдмрдирд╛рдиреЗ рд╕реЗ рднреА рдкрд░реЗрд╢рд╛рди рди рд╣реЛрдВ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ / рд╕рд░рдгрд┐рдпреЛрдВ рдЬреИрд╕реЗ рд╕рдореГрджреНрдз рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдг DOM рдиреЛрдб рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЬрдм рдЖрдк рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рд░рд┐рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рдЕрдкрдиреА рдкрд╣рдЪрд╛рди рдЦреЛ рджреЗрддрд╛ рд╣реИред рдорддрд▓рдм, рдЕрдЧрд░ рдЗрд╕рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреАрдУрдЬреЗрдУ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ, рддреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдИ рд╣реИред
рдХреБрдЫ рд▓реЛрдЧ рд╡рд╕реНрддреБ рдЧреБрдгреЛрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЧреИрд░-рддрд╛рд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЗрд╕рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд┐рд▓реНрд▓рд╛рддрд╛ рд╣реИ рдмрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╕реЗрдЯ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ 100% рдорд╛рдирдХ рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреБрдг рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╛рдирдХ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ HTML рддрддреНрд╡ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЧреБрдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреЛрдиреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, <img src="">
рдпрд╛ HTMLImageElement.src ред
рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯ рд▓реЗрдЦрдХ рдЕрдкрдиреА рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗрдЯрдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмрдврд╝рд╛ / рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕реЗрдЯрдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдЦрдХ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЗрдПрд╕ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ "рдЧреИрд░-рдорд╛рдирдХ" рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рддрддреНрд╡ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдХреНрд▓реЛрди рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдЬреАрдм рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд╣рд░ рд╕рдВрднрд╡ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗ, рди рдХрд┐ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде, рддреЛ рд╡рд╣ рд▓реЗрдЦрдХ рдЕрдкрдиреЗ рддрддреНрд╡ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣рд░ рдЪреАрдЬ рдХреЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛, рдФрд░ рдпрджрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рдкреВрд░рд╛ рдмреНрд░рд╣реНрдорд╛рдВрдб рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдЧрд░, рдФрд░, рдпрд╛ рд▓реЗрдХрд┐рди рдирд╣реАрдВ рд╣реИ! (рдЬрдм рддрдХ w3c/whatwg рдХреБрдЫ рдмрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рддрд╛)
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪреЗ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдкрд░ рдЬреЗрдПрд╕ рдЧреБрдг рд╕реЗрдЯ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп)ред рдЕрдзрд┐рдХрддрдо рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦрдХреЛрдВ рдХреЛ JS рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред рдкреЙрд▓рд┐рдорд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рд╕рднреА рддрддреНрд╡ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред
рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 100% рд╕рдордп рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВред рдЗрд╕ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдирдЪрд┐рддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХреЗ рд╕рд╛рде рдорд╛рди рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рдЕрдЯреВрдЯ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдЬреЛ рдЕрдиреНрдпрдерд╛ рдЕрд░реНрдерд╣реАрди "[рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ]" рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджреЗрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _is_ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдорд╛рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рд░рд╣реА рд╣реИред рдХреЙрд▓рд┐рдВрдЧ setAttribute('foo', {some: object})
рдореЗрдВ рдкрд░рд┐рдгрд╛рдо [object Object]
ред рдЬрдм рддрдХ рдЖрдк рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рд╡рд╕реНрддреБ рдкрд░ JSON.stringify()
? рд▓реЗрдХрд┐рди рддрдм рд╡рд╣ рд╡рд╕реНрддреБ "рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд" рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдЖрдк setAttribute()
рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрдХ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдбреАрдУрдПрдо рдХреЛ рдмрдВрджрд░-рдкреИрдЪ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЬреЗрдПрд╕ рдЧреБрдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _is_ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдорд╛рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рд░рд╣реА рд╣реИред рдХреЙрд▓рд┐рдВрдЧ
setAttribute('foo', {some: object})
рдореЗрдВ рдкрд░рд┐рдгрд╛рдо[object Object]
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ setAttribute
рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рдордЬрдмреВрд░ рдХрд░ рд░рд╣реА рд╣реИ:
рддрдерд╛
рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╣реА рдЧрдИ рд╕рднреА рдмрд╛рддреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред
рд╣рдо рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдЪреАрдЬреЛрдВ рдХреЛ рджреЛрдиреЛрдВ рддрд░рд╣ рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рдХреЛрдИ рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕реЗ рд╕рд┐рд░реНрдл рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ
setAttribute
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддрд░реНрдХ,рдпрджрд┐ рд╡рд┐рдХрд▓реНрдк 5 рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрд╕рдПрд╕рдЖрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдпрд╛ рдкреНрд░реЙрдкреНрд╕ рдореЗрдВ рдореИрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рдХрд▓реНрдк 5 рдПрдкреАрдЖрдИ рдХреЗ рдЙрдкрдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ setAttribute рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рдордЬрдмреВрд░ рдХрд░ рд░рд╣реА рд╣реИ
рдЕрдЪреНрдЫрд╛ рдРрд╕рд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдПрдХ рдХрд╕реНрдЯрдо toString()
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ [object Object]
ред
рдЪреВрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдПрдХ рдХрд╕реНрдЯрдо
toString()
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ[object Object]
ред
рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЕрдЧрд░ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдБ
const div = document.createElement('div')
div.setAttribute('foo', {a:1, b:2, c:3})
рдкрд░рд┐рдгрд╛рдо рд╣реИ
<div foo="[object Object]"></div>
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдореЗрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬрдм рд╣рдо рдПрдХ рдЧреИрд░-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рддрддреНрд╡ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЧреИрд░-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдП-рдлрд╝реНрд░реЗрдо рддрддреНрд╡реЛрдВ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЖрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднрдЧрд╡рд╛рди рдирд╣реАрдВ рд╣реИ, рдЕрдиреНрдп рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реЛрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ
рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднрджреНрджрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рд╣реИ рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рдХрд╣рд╛рдБ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рдФрд░ рд╡рд┐рдЬрди рд╣реИрдВред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
@sebmarkbage рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореЗрд░рд╛ рдорддрд▓рдм рдмрд┐рд▓реНрдХреБрд▓ рднреА
рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ (рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рднреА рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдЧреБрдгреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреА рд╣реИ рдЬреЛ ' t рд╕рднреА рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ)ред
рд░рд┐рдПрдХреНрдЯ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддрддреНрд╡ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджрд┐рдП рдЧрдП рд╕рднреА рдорд╛рдиреЛрдВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрддрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдлреНрд░реЗрдо-рд░рд┐рдПрдХреНрд╢рди (рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред
рдЕрдЧрд░ рд░рд┐рдПрдХреНрдЯ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рддрддреНрд╡реЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╕рд╛рджреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рддреЛ рдпрд╣ рдореБрдЭреЗ рд╕рдмрд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛ рджреЗрдЧрд╛ред рдореИрдВ
рдлрд┐рд░ рд╕реЗ, рд╡рд╣рд╛рдБ рдореЗрд░реЗ рд╢рдмреНрджреЛрдВ рдХреЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореИрдВ рдЕрдЧрд▓реА рдмрд╛рд░ рдЗрд╕реЗ рджреЛрдмрд╛рд░рд╛ рд╕реЛрдЪреВрдВрдЧрд╛ред
рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП RFC PR рдореЗрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдФрд░ рдЙрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдореЙрдбрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдПрдХ рд╣рд╛рдЗрдмреНрд░рд┐рдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХреАрдХрд░рдг рдХрд╛ рдПрдХ рд╢реВрдиреНрдп-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВред рд░рд┐рдПрдХреНрдЯ рдХреЛ рдмреЗрд╣рддрд░реАрди рдмрдирд╛рдиреЗ рдХреЗ рдЖрдкрдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕ рдЖрд░рдПрдлрд╕реА рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?
рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рд╣реЛ рд░рд╣реА рд╣реИрдВ рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд░рд┐рдПрдХреНрдЯ рдРрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдЗрд╕ рдкрд░ рдЕрднреА рддрдХ рдХреЛрдИ рдЦрдмрд░? рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЛ рд▓рдкреЗрдЯрдирд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрд╕рд╛рдзреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ Vue рдФрд░ Angular рдореВрд▓ рд░реВрдк рд╕реЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрднрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ
рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?
рдореИрдВ рднреА рд╣реИрдХреНрд╕ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдП рдмрд┐рдирд╛ рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЬрд╛рдПред
@mgolub2 рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреА рдХрд┐ рд╡реЗрдм рд╕рдореБрджрд╛рдп рдХреНрдпрд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╡реЗрдм рдШрдЯрдХ рдЕрдм рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдорд╛рдирдХ рд╣реИрдВ, рдФрд░ 2 рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж рдЗрд╕ рдорд╛рдирдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреАрдо рдХреА рдУрд░ рд╕реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИрдВред
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдореИрдВрдиреЗ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╢реБрд░реВ рдХрд┐рдпрд╛: https://github.com/facebook/react/pull/16899
рдпрд╣ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХ рдХреЛ рдирд┐рдореНрди рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
class MyElement extends HTMLElement {
setAttribute(name, value) {
// default to existing behavior with strings
if (typeof value === 'string')
return super.setAttribute(name, value)
// but now a custom element author can decide what to do with non-string values.
if (value instanceof SomeCoolObject) { /*...*/ }
}
}
рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд setAttribute
рд╡рд┐рдзрд┐ рдХреИрд╕реА рджрд┐рдЦ рд╕рдХрддреА рд╣реИ, рдЗрд╕ рдкрд░ рдХрдИ рднрд┐рдиреНрдирддрд╛рдПрдВ рд╣реИрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреАрдо, рдЖрдк рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдбреЛрдо рдХреА рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдлреА рдЬрдм рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рд░рд╛рдп рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рдореЗрдВ рдмрд╛рдзрд╛ рдбрд╛рд▓рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХ рдЕрдкрдиреЗ __ рдХрд╕реНрдЯрдо __ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореМрдЬреВрджрд╛ рдбреЛрдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЛрдо рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ, рдФрд░ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдбреАрдУрдПрдо рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдбреАрдУрдПрдо рдореЗрдВ рдкреНрд░рд╡рд╛рд╣рд┐рдд рд╣реЛрддрд╛ рд╣реИред "рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдбреАрдУрдПрдо рдореЗрдВ рдмрд╣рддрд╛ рд╣реИ" рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рд╡рд╣рд╛рдВ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рд▓реЗрддрд╛ рд╣реИ (рд▓реЗрдЦрдХ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рддрд╛рд░реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд▓реЗрдЦрдХ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ)ред
рдЖрдк рд▓реЗрдЦрдХ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдХреНрдпреЛрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЖрдк рдпрд╣ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬреЛ рд╡реНрдпрдХреНрддрд┐ рдбреАрдУрдПрдо рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдбреАрдУрдПрдо рдХреЛ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИ?
@trusktr рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ https://github.com/facebook/react/issues/10070 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХреЛрдВ рдХреЛ setAttribute
рдЬреИрд╕реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рд╛рд╡рдзрд╛рди рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдордВрдХреА рдкреИрдЪ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред cc @gaearon
рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрд╡рд░реНрдЧреЛрдВ рдореЗрдВ setAttribute
рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ (рдпрд╣ рдмрдВрджрд░ рдкреИрдЪрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ)ред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЙрд╕ рдкрд░ рдирд┐рд░реНрджреЗрд╢ рдХреНрдпреЛрдВ рджреЗрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рд▓рд┐рдм рдХрд╛ рдХрд╛рдо рд╣реЛред рд╣рдо DOM (рдмрд┐рдирд╛ рдмрд╛рдзрд╛ рдХреЗ) рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЕрдЧрд░ рдореБрдЭреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ el.setAttribute()
рдХрд░рдирд╛ рд╣реИ, рддреЛ рдпрд╣ рднреА рджреЗрд╡ рдЕрдиреБрднрд╡ рдХреЛ рдФрд░ рдЦрд░рд╛рдм рдХрд░ рджреЗрддрд╛ рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдЯреАрдо setAttribute
рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдХрд┐рд╕реА рдмрдбрд╝реЗ рдЬреЛрдЦрд┐рдо рд╕реЗ рдмрдЪрд╛ рд░рд╣реА рд╣реИред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП JSX рд╕реНрдкреЗрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдпрджрд┐ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ рддреЛ рд╕рдореБрджрд╛рдп рдХреНрдпрд╛ рдЦреЛ рджреЗрддрд╛ рд╣реИ? рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдХреНрдпрд╛ рдЦреЛрддреА рд╣реИ?
рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдмрд╛рдж рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИ...
рдХреНрдпреЛрдВ рди рдХрдо рд╕реЗ рдХрдо рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧрд┐рдлрд┐рдХреЗрд╢рди рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рджрд┐рдпрд╛ рдЬрд╛рдП? рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдк рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХреЛрдВ рдХреЛ
setAttribute
рдЬреИрд╕реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рд╛рд╡рдзрд╛рди рдХрд░рддрд╛ рд╣реВрдВред
рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдпрд╣ рдПрдХ рд▓рд╛рд▓ рд╣реЗрд░рд┐рдВрдЧ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред "рдЕрдкрдиреЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рд╕рдордЭрд╛рдПрдВ" рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд┐ рдбреАрдУрдПрдо рддрддреНрд╡реЛрдВ рдкрд░ рдЧреБрдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
@trusktr
рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ?
рд╡реЗрдм рдШрдЯрдХ рдПрдХ рдорд╛рдирдХ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдорд╛рдирдХ рдХреЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдорд╛рдирдХ-рдЕрдиреБрдкрд╛рд▓рди рднреА рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рд╣рд╛рд▓рд╛рдВрдХрд┐, setAttribute
рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЗрд╕ рд╢рд░реНрдд рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ: рдпрд╣ рдХреЗрд╡рд▓ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдХ рдмрдирд╛рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдиреНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИрдВ рдЬреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЬрдм рд╡реЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рднреА рдЙрдиреНрд╣реЗрдВ рд░рд┐рдПрдХреНрдЯ рд╣реИрдХ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕рд░реНрд╡рд╡рд┐рджрд┐рдд рд╣реИ рдХрд┐ рдорд╛рдирдХ рддрд░реАрдХреЛрдВ рдХреЛ рдкреИрдЪ рдХрд░рдирд╛ рдПрдХ рдЧрд▓рдд рддрд░реАрдХрд╛ рд╣реИред setAttribute
рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рд╕реЗ рдореВрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд╡реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рд╣рд░ рдХреЛрдИ рдорд╛рдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ HTMLElement
рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЬрдмрдХрд┐ рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЕрдиреНрдп рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдврд╛рдВрдЪреЗ рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ setAttribute
рдХреЛ рдмрд╣реБрдд рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкреИрд░ рдХреЛ рд╢реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛрдВрдЧреЗред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд░рд┐рдПрдХреНрдЯ рд░реИрдкрд░ рдЕрдзрд┐рдХ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИред
рд╣реЗ рджреЛрд╕реНрддреЛрдВ, рдЗрд╕ рдмреАрдЪ рдЬрдм рд╣рдо рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЖрдкрдХреЗ рд╡реЗрдм рдШрдЯрдХ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд┐рдо рдмрдирд╛рдпрд╛ рд╣реИ https://www.npmjs.com/package/reactify-wc
import React from "react";
import reactifyWc from "reactify-wc";
// Import your web component. This one defines a tag called 'vaadin-button'
import "@vaadin/vaadin-button";
const onClick = () => console.log('hello world');
const VaadinButton = reactifyWc("vaadin-button");
export const MyReactComponent = () => (
<>
<h1>Hello world</h1>
<VaadinButton onClick={onClick}>
Click me!
</VaadinButton>
</>
)
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╕рд╛рдмрд┐рдд рд╣реЛрдЧрд╛
(рдпрд╣ рдУрдПрд╕рдПрд╕ рдореЗрдВ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рд╡реЗрд╢ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рд╕реЗ рдмрд╛рд╣рд░ рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рдкрд╣рд▓реА рдУрдкрди рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рд╕реНрд╡рд╛рдЧрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ ЁЯШД)
рд╣реЗ рджреЛрд╕реНрддреЛрдВ, рдЗрд╕ рдмреАрдЪ рдЬрдм рд╣рдо рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЖрдкрдХреЗ рд╡реЗрдм рдШрдЯрдХ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд┐рдо рдмрдирд╛рдпрд╛ рд╣реИ https://www.npmjs.com/package/reactify-wc
import React from "react"; import reactifyWc from "reactify-wc"; // Import your web component. This one defines a tag called 'vaadin-button' import "@vaadin/vaadin-button"; const onClick = () => console.log('hello world'); const VaadinButton = reactifyWc("vaadin-button"); export const MyReactComponent = () => ( <> <h1>Hello world</h1> <VaadinButton onClick={onClick}> Click me! </VaadinButton> </> )
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╕рд╛рдмрд┐рдд рд╣реЛрдЧрд╛
(рдпрд╣ рдУрдПрд╕рдПрд╕ рдореЗрдВ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рд╡реЗрд╢ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рд╕реЗ рдмрд╛рд╣рд░ рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рдкрд╣рд▓реА рдУрдкрди рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рд╕реНрд╡рд╛рдЧрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ ЁЯШД)
рдмрдврд╝рд┐рдпрд╛ рд░реИрдкрд░ :)
рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рд╕реНрдЯреИрдВрд╕рд┐рд▓ рдХреЗ рд╕рд╛рде рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ: https://stenciljs.com/docs/faq#can -data-be-passed-to-web-components-
@matsgm рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рд╕реНрдЯреИрдВрд╕рд┐рд▓ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд╛рд╡рдзрд╛рдиреА рдХреЗ рдПрдХ рд╢рдмреНрдж рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рд╕реНрдЯреИрдВрд╕рд┐рд▓ рдиреЗ рдЕрдиреНрдп рд╡реЗрдм рдШрдЯрдХ рдврд╛рдВрдЪреЗ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреЙрд▓рд┐рдорд░ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдмрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг, рд╕рдорд░реНрдерди рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмреАрдЪ рдЖрдзрд╛ рджрд░реНрдЬрди рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рд╕реЗ рдирд╛рд░рд╛рдЬ рд╣реИрдВред рдЖрдкрдХреА рдорд╛рдЗрд▓реЗрдЬ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ :)
рдмрд╕ рдЗрд╕ рд╕реВрддреНрд░ рдХреЗ рд╕рд╛рде рдЕрдк-рдЯреВ-рдбреЗрдЯ рд░рд╣рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ?
рдПрдХ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЬрд╛рджреВ рдХреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдЯреАрдЖрд░, рдкреНрд░реЛрдк, рдШрдЯрдирд╛ рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рд╣реВрдВ рдЬреЛ рдмрд╣реБрдд рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЬреИрд╕реЗ snabbdom рд╕реНрдкрд╖реНрдЯ рд╢реАрд░реНрд╖ рд╕реНрддрд░реАрдп рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдпрд╣ рдЬрд╛рдирдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЗрд░рдлреЗрд░ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рд╣реИ рдЬреИрд╕реЗ onClick
=> click
рд╕реЗ рдкреНрд░рддреНрдпрдп рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдирд╛ рдЕрднреА рднреА рдПрдХ рдкреВрд░реНрдг рд╣рд┐рдЯ рд╣реИред
<input attrs={{placeholder: `heyo`}} style={{color: `inherit`}} class={{hello: true, world: false}} on={{click: this.handleClick}} props={{value: `blah`}} />
attr = (attr, val) => elem.setAttribute(attr, val);
prop = (prop, val) => elem[prop] = val;
on = (event, handler) => elem.addEventListener(event, handler)
style = (prop, val) => elem.style[prop] = val;
class = (name, isSet) => isSet ? elem.classList.add(name) : elem.classList.remove(val)
dataset = (key, val) => elem.dataset[key] = val;
рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ JSX рдбреЙрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреНрд░реЙрдкреНрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рд╣реЛрдЧрд╛ рдФрд░ рд╣рдо рдмрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ
<div tabIndex={-1} attr.title={"abcd"} on.click={handler} style.opacity={1} class.world={true} />`
fyi @sebmarkbage ^
const whatever = 'Whatever';
const obj = { a: 1, b: 2 };
const reactComponent = (props) => (
<div>
...
<custom-element attr="{whatever}" someProp={obj} />
{ /* double quotes for attributes */ }
{ /* no quotes for properties */ }
</div>
);
рдпрд╣ рд░рд┐рдПрдХреНрдЯ JSX рдкреНрд░рд╛рдЧреНрдорд╛ рдкрд╛рд░реНрд╕рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк propeties
(рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП props
) рдХреЛ рд╕рдВрдкрддреНрддрд┐ рдкрд╛рд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢рдмреНрдж рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рд╣реИ
рдЪреВрдВрдХрд┐ рдЖрдЬ резрен.реж рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рдЗрд╕реЗ рдХрдм рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рд╣рд╛рдВред рд╣рдордиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рд░рд┐рдПрдХреНрдЯ 17 рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдереА рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрджрд╛рд╡рдирдд рд╣рдЯрд╛ рджрд┐рдП рдЧрдП рдереЗ (рдФрд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреБрд░рд╛рдиреЗ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдмрд╣реБрдд рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдордиреЗ рд░рд┐рдПрдХреНрдЯ 17 рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ (рдШрдЯрдирд╛рдПрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдмрдЬрд╛рдп рд░реВрдЯ рддрддреНрд╡ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИрдВ) ) рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рддрд╛рдХрд┐ рдкреБрд░рд╛рдиреЗ рдРрдкреНрд╕ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ 17 рдкрд░ рдмрдиреЗ рд░рд╣ рд╕рдХреЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ 18+ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХреЗрдВред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ рдХрд┐ рд╣рдо рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛ 17 рдореЗрдВ рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЬрд┐рди рдЪреАрдЬреЛрдВ рдХреА рд╣рдордиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ 17 рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдереА, рдЙрдиреНрд╣реЗрдВ 18 рдореЗрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 17 рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯреЗрдкрд┐рдВрдЧ рд╕реНрдЯреЛрди рд░рд┐рд▓реАрдЬ рд╣реИред рдЬреЛ рд╣рдореЗрдВ 18 рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдпрджрд┐ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд░рд╛рд╕реНрддрд╛ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ WC рд╕рдореБрджрд╛рдп рдХреА рдирд╡реАрдирддрдо рдЖрдо рд╕рд╣рдорддрд┐ рдХреНрдпрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЗрдирдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рд╡рд┐рдХрд▓реНрдк рдмреЗрд╣рддрд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрди рд╕рднреА рдХреЛ рдиреАрдЪреЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реИ (рдЙрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @robdodson рдХреЗ рд▓рд┐рдП рдмрдбрд╝рд╛ рд╕рд╣рд╛рд░рд╛)ред рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХреА рдЙрддреНрд╕реБрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд▓реЛрдЧреЛрдВ рдХреА рд░рд╛рдп рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ рд╣реИ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рдирдИ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рджрд┐рд╢рд╛ рдЪреБрдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ WC рд╕рдореБрджрд╛рдп рдиреЗ рдЕрдкрдирд╛ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рдХрд▓реНрдк рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЕрднреА рднреА рд╡рд┐рдХрд▓реНрдк 3 рд╣реИред @Developit рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ Preact рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╕рдВрдЧрдд рд╣реИ, рдЬреЛ React рдХреЗ рд▓рд┐рдП рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдореЗрдВ рдкрд╛рд╕рд┐рдВрдЧ (рдЬрдЯрд┐рд▓) рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреИрд╕реЗ рд╕рдВрдЧрдд рд╣реИрдВ, рдЗрд╕рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рд▓реЛрдХрди рдХреЗ рд▓рд┐рдП, https://custom-elements-everywhere.com/ рдореЗрдВ рд╕рднреА рд╡рд┐рд╡рд░рдг рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ https://github.com/vuejs/vue/issues/7582 рдореЗрдВ , Vue рдиреЗ рд╕рд┐рдЧрд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪреБрдирд╛, рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ "ред" рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ (рдЧреНрд▓рд┐рдорд░ рдХрд╛ "@" рдирд╣реАрдВ)ред
https://github.com/vuejs/vue/issues/7582#issuecomment -362943450 рдореЗрдВ, @trusktr рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд╣реА SSR рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди SSR'd HTML рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ sigil'd рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдиреНрд╣реЗрдВ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЬреЗрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдХреЗрд▓реЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдирдпрд╛ JSX рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред
рдПрдХ рд╕рд╡рд╛рд▓ рдпрд╣ рднреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рдХрд▓реНрдк (3) рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рдпрджрд┐ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕реНрдХрд░рдг (5) рд╕рдВрднрд╡рддрдГ рдореЗрдЬ рдкрд░ рд╣реИред рдпрд╛рдиреА рд╡рд┐рдХрд▓реНрдк (5) рдХрд╕реНрдЯрдо рдорд╛рдЙрдВрдЯ/рдЕрдкрдбреЗрдЯ/рдЕрдирдорд╛рдЙрдВрдЯ/рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╕реНрдЯрдо рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд░рд┐рдПрдХреНрдЯ рдиреЛрдбреНрд╕ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рддрдВрддреНрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрдВрдЧреЗ)ред
рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ JSX рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп JSX рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдФрд░ рдХрд╕реНрдЯрдо рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдореЗрдВ рдИрд╕реАрдПрдордПрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рдЦрд╛ рдерд╛ (рдлреЗрд╕рдмреБрдХ/рдЬреЗрдПрд╕рдПрдХреНрд╕ # 108) рдФрд░ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдЬреЛрдбрд╝ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдХрдВрдкреНрдпреВрдЯреЗрдб рдкреНрд░реЙрдкрд░реНрдЯреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЙрдкрд▓рдмреНрдз рдерд╛ рдЬреЛ рдХрдВрдкреНрдпреВрдЯреЗрдб рдкреНрд░реЙрдкрд░реНрдЯреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рд╕рд┐рдВрдмрд▓ рдпрд╛ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕реНрдб рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
import {property} from 'react';
// ...
<custom-img [property('src')]="corgi.jpg" [property('hiResSrc')]="[email protected]" width="100%">
@dantman рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЛ рдХреИрд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИ?
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ WC рд╕рдореБрджрд╛рдп рдореЗрдВ рдХреЛрдИ рднреА рд╡рд┐рдХрд▓реНрдк 5 рдЪрд╛рд╣рддрд╛ рд╣реИред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рд░рд┐рдПрдХреНрдЯ рд░реИрдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдкреИрдЪрд┐рдВрдЧ рдХреЗ рд╡рд░реНрддрдорд╛рди рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рднрд╛рд░реА рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╛ рддреЛ рдШрдЯрдХ рд▓реЗрдЦрдХ рдкрд░ рд╡рд┐рд╢реЗрд╖-рдХреЗрд╕ рд░рд┐рдПрдХреНрдЯ рдпрд╛ рдШрдЯрдХ рдЙрдкрднреЛрдХреНрддрд╛ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдХреЗрд╕ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдкрд░ рдмреЛрдЭ рдбрд╛рд▓рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдкрд░ рдЖрдкрдХреА рдХреНрдпрд╛ рд╕реЛрдЪ рд╣реИ? рдпрджрд┐ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдиреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреМрди рд╕рд╛ рдЕрдиреБрдорд╛рдиреА рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ? рдХреНрдпрд╛ рдбрдмреНрд▓реНрдпреВрд╕реА рд╕рдореБрджрд╛рдп рдореЗрдВ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдореЗрдХрди рд╣реБрдЖ рд╣реИ? рдореИрдВрдиреЗ рдЗрд╕ рдЖрд░рдПрдлрд╕реА рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрдврд╝рд╛ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд░рд┐рдПрдХреНрдЯ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд░ рдЕрдзрд┐рдХ рдЬреЛрд░ рджреЗрдиреЗ рдХреА рдУрд░ рдмрдврд╝рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдЕрдХреНрд╕рд░ рдХреНрд▓рд╛рдЗрдВрдЯ-рдХреЗрдВрджреНрд░рд┐рдд рдЪреВрдХ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЖрд▓реЛрдЪрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ)ред
@gaearon рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд▓рдпреЛрдЬрди рдФрд░ рдХрд╕реНрдЯрдо рдЧреБрдг рдирд╣реАрдВ рдкрддрд╛ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ property(propertyName)
, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдПрдХ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕реНрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдЬреИрд╕реЗ '__REACT_INTERNAL_PROP__$' + propertyName
) рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рд╕рд┐рдВрдмрд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ "рд╕рд┐рдВрдмрд▓ => рдкреНрд░реЙрдкрд░реНрдЯреАрдирд╛рдо" рдПрд╕реЛрд╕рд┐рдПрд╢рди рдХреЛ рд╕рд╣реЗрдЬ рд╕рдХрддрд╛ рд╣реИред рдирдХреНрд╖рд╛ред
рдмрд╛рдж рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдЙрд╕ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЗрд░реА рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдг рдХреБрдЫ рдРрд╕реЗ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рд╣реИред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЛ рднреА рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╡рдд: рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рд░реНрд╡рд░ рдкрд░ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдпрд╣ property
рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред
рдПрдХ рд╡реЗрдм рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╡рд┐рдХрд▓реНрдк 5 рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдврд╛рдВрдЪреЗ рдФрд░ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреАрдорд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдФрд░ рдХрдИ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░ рдкрд░ рдмреЛрдЭ рдмрдврд╝ рдЬрд╛рдПрдЧрд╛ред
рд╡рд┐рдХрд▓реНрдк 5 рд╕реЗ рдХреЛрдИ рдирд╣реАрдВ рдЬреАрддрддрд╛ред
@claviska рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд░рд╛рдп рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЛ рдЕрдзрд┐рдХ рдирд┐рд╣рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
@gaearon SSR рджреЛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдк-рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрдЧрд╛: рд╡реЗ рдЬрд╣рд╛рдБ рдХрд╕реНрдЯрдо рддрддреНрд╡ SSR рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд╣рд╛рдБ рдпрд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЙрди рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ SSR рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд░реНрд╡рд░ рдкрд░ рдЧреБрдг рд╕реЗрдЯ рдХрд░рдирд╛ рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред id
рдФрд░ className
рдЬреИрд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдЧреБрдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдПрд╕рдПрд╕рдЖрд░ рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╡реЗ рдбреАрдУрдПрдо рдкрд░ рдЬреЛ рднреА рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рддрддреНрд╡ рдЙрджрд╛рд╣рд░рдг рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ SSR рдкреНрд░реЙрдХреНрд╕реА/рд╕реНрдЯреИрдВрдб-рдЗрди, рдФрд░ SSR'ed DOM рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рд╡реЗрдм рдШрдЯрдХ рд▓реЗрдЦрдХреЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдкреБрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдПрд╕рдПрд╕рдЖрд░ рдкрд░ рдореЗрд░реА рдЯреАрдо рдХреЗ рдХрд╛рдо рдореЗрдВ рд╣рдордиреЗ createElement
рдХреЛ рдкреИрдЪ рдХрд░рдХреЗ рдФрд░ dangerouslySetInnerHTML
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХреАрдХрд░рдг/рдкреНрд░рдпреЛрдЧ рдХрд╛ рд╕реНрддрд░ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдереЛрдбрд╝реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд░рд╣реЗрдВрдЧреЗред рдЬрд▓реНрдж рд╣реА рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо SSR рд╕рд┐рд╕реНрдЯрдо рдХреЗ рднреАрддрд░ рдЗрдВрдЯрд░рдСрдк рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рднреВрдорд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ рдЕрднрд┐рд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддрдм рддрдХ _deep_ SSR рдХреЗ рдмрд┐рдирд╛ рдХрд╕реНрдЯрдо рдПрд▓реАрдореЗрдВрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдФрд░ рдЗрд╡реЗрдВрдЯ рд╕рдкреЛрд░реНрдЯ рд╣реЛрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рд╡рд┐рд╡реЗрдХрдкреВрд░реНрдг рд╣реИред рддрддреНрд╡ рдХрд╛ рдЯреИрдЧ рдЕрднреА рднреА рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЗ рдмрдЪреНрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ SSR'ed рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдЬ рд╣реИред
рдЖрдИрдбреА рдФрд░ рдХреНрд▓рд╛рд╕рдирд╛рдо рдЬреИрд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдЧреБрдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ рдХрд┐ <github-icon iconname="smiley" />
ред рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ SSR рдХреЛ HTML рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЗрд╡рд▓ <github-icon />
рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд┐рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬрд▓рдпреЛрдЬрди рдХреЗ рджреМрд░рд╛рди domNode.iconname = ...
рд╕реЗрдЯ рдХрд░реЗрдЧреА? рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЛрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред github-icon
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ HTML рдореЗрдВ iconname
рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдХреМрди рд╕рд╛ рдЖрдЗрдХрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИ?
рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рд╡реЗрдм рдШрдЯрдХ рд▓реЗрдЦрдХреЛрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдкреБрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЖрдо рд╕рд╣рдорддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рд░рд┐рдПрдХреНрдЯ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд░рдЦрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ? рдореИрдВ 2017 рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЦреБрд▓реЗ рд╣реЛрдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рдирд┐рд░рд╛рд╢рд╛ рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕рдордЭрддрд╛ рд╣реВрдВред рджреВрд╕рд░реА рддрд░рдл, рддреАрди рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдо рд╕рд╣рдорддрд┐ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдиреА рд╣реИред рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ рдХреНрдпрд╛ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдзрд┐рдХ рдкреНрд░рдпреЛрдЧ рдХреА рдмрд╛рдд рд╣реИ?
@gaearon рдпрджрд┐ рд░рд┐рдПрдХреНрдЯ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ iconname
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдбреИрдлреЙрд▓реНрдЯ рдорд╛рди рдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдЕрд╕рд╛рдЗрди рдХрд░реЗрдЧрд╛ред рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ if _iconname_ does not exist in the HTML
? рдпрджрд┐ HTMLElement рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧрд╛ред рдПрдХ рдмрд╛рд░ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкрд░рд┐рднрд╛рд╖рд╛ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ HTMLElement рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдЧрд╛ рдФрд░ iconname
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдирдП рдорд╛рди рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
рдореИрдВ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдирдЬрд░рд┐рдП рд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдкреЗрдЬ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдмреАрдЪ рдореЗрдВ рдПрдХ рдЖрдЗрдХрди рд╣реЛрддрд╛ рд╣реИред рд╡рд╣ рдЖрдЗрдХрди рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪреАрдЬреЛрдВ рдХрд╛ рдХреНрд░рдо рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдиреБрднрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдореЗрд░реА рдЕрдм рддрдХ рдХреА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐:
рд╡реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рдорд╛рд░реНрдХрдЕрдк рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡реЗ <github-icon>
рдХрд╕реНрдЯрдо рддрддреНрд╡ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред рд╕рдВрднрд╡рддрдГ рдпрд╣ рдПрдХ рдЦрд╛рд▓реА рдбрд┐рд╡ рдХреА рддрд░рд╣ рдПрдХ рдЫреЗрдж рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд╕рд╣реА рдЬрд╡рд╛рдм рджреЛ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдБ (?)ред рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрднреА рддрдХ рд▓реЛрдб рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
<github-icon>
рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкрдВрдЬреАрдХреГрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреВрдВ, рддреЛ рдпрд╣ "рдЕрдкрдЧреНрд░реЗрдбрд┐рдВрдЧ" рдирд╛рдордХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ JS рддреИрдпрд╛рд░ рд╣реИ, рдлрд┐рд░ рднреА рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ HTML рдореЗрдВ iconname
рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдЖрдЗрдХрди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ "рдЧреИрд░-рдмрд┐рд▓рд┐рди рдЧреБрдгреЛрдВ рдХреЛ HTML рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ"ред рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА рдПрдХ "рдЫреЗрдж" рджреЗрдЦрддрд╛ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди, рд░рд┐рдПрдХреНрдЯ .iconname =
рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрдиреБрдорд╛рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдм рдЖрдЗрдХрди рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣реА рдмреНрд░реЗрдХрдбрд╛рдЙрди рд╣реИ рдЬрд╣рд╛рдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдЬреЗрдПрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ WC рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ?
@gaearon рд╣рд╛рдБ, рдореИрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛ред
рджреВрд╕рд░реА рдУрд░, рддреАрди рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдо рд╕рд╣рдорддрд┐ рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдиреА рд╣реИ
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдо рд╕рд╣рдорддрд┐ рдирд╣реАрдВ рдмрдиреА рд╣реИред рдореИрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рдЕрднреА _deep_ SSR рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрд╕реНрдкрд╖реНрдЯ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдХреЛ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрднреА рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ (рдЧрд╣рд░рд╛ рдмрдирд╛рдо рдЙрдерд▓рд╛) рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреБрди: рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рд╕рдордЭрд╛ рд╣реИред
"рдбреАрдк" рдПрд╕рдПрд╕рдЖрд░ рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд╕рдорд╛рди рд╣реИ рдХрд┐ рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдПрдХ рд╕реАрдИ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рд╕реАрдИ рдХреЗ рддрд░реНрдХ рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЕрднреА рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рд▓рд┐рдП рдЙрд╕рдХрд╛ рдорддрд▓рдм рдмрдирддрд╛ рд╣реИред
"рдиреЙрдЯ рдбреАрдк" рдПрд╕рдПрд╕рдЖрд░ рджреНрд╡рд╛рд░рд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рд╕реАрдИ рдЯреИрдЧ рдХреЛ рд╣реА рдПрдЪрдЯреАрдПрдордПрд▓ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореБрдЭреЗ рднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рд╣рд╛рд▓рд╛рдВрдХрд┐ _this_ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛ - "рдЧрд╣рд░реЗ" SSR рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, https://github.com/facebook/react/issues/11347#issuecomment -ренрезрейреирейрежрелренреи рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ _рдкрд╣рд▓реЗ рд╕реЗ рд╣реА CE рд▓реЙрдЬрд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рднреА, рд╣рдо рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЧреБрдг рддрдм рддрдХ рдЕрдЬреНрдЮрд╛рдд рд░рд╣рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ JS рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рд▓реЛрдб рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред рдореИрдВ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдПрдХ рдЕрд╕реНрдкрд╖реНрдЯ рдЪрд┐рдВрддрд╛ рд╣реИред рдореИрдВ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рдЧрд▓рдд рдирд╣реАрдВ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ред рддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдЯреАрдХ рд╢рдмреНрджрд╛рд░реНрде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЬ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ/рдЧреБрдгреЛрдВ рдХреЛ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд рдШрдЯрдХреЛрдВ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЗрд╕рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
@gaearon
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/facebook/react/issues/11347#issuecomment -713230572 рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдЧреБрдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЧреБрдг рд╕реЗрдЯ рдХрд░рдирд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдмреВрд▓рд┐рдпрди рдЬреИрд╕реЗ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдорд╛рдорд▓реЗ рдХреЛ рд╕реАрдзреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ iconname
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрднреА рднреА рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред
NS
рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкрдВрдЬреАрдХреГрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭреВрдВ, рддреЛ рдпрд╣ "рдЕрдкрдЧреНрд░реЗрдбрд┐рдВрдЧ" рдирд╛рдордХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ JS рддреИрдпрд╛рд░ рд╣реИ, рдлрд┐рд░ рднреА рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ HTML рдореЗрдВ iconname рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдЖрдЗрдХрди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ "рдЧреИрд░-рдмрд┐рд▓рд┐рди рдЧреБрдгреЛрдВ рдХреЛ HTML рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ"ред рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА рдПрдХ "рдЫреЗрдж" рджреЗрдЦрддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдпрд╣рд╛рдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк "рдЫреЗрдж" рджреЗрдЦрдиреЗ рдХреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдпрд╛ рддреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рджрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рджреНрд╡рд╛рд░рд╛ рдпрд╛ рд╕реНрд▓реЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднрд╛рдЧ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдШрдЯрдХ рдЕрдкрдЧреНрд░реЗрдб рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдЬрд┐рдирдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдПрд░реЗ, рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЗрддреНрдпрд╛рджрд┐ рдЧреБрдг рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, lit-virtualizer
рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдХреНрд░реЛрд▓рд░ рдШрдЯрдХ рд▓реЗрдВред
рдЗрд╕рдХреЗ рд▓рд┐рдП рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ items
рд╕рд░рдгреА рдФрд░ renderItem
рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЖрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ scrollTarget
рддрддреНрд╡ рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рднреА рдХреЛ рдХреЗрд╡рд▓ рд░реЗрдлрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддреБрд░рдВрддред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╢рд╛рдпрдж рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреЗрдЬрд┐рдиреЗрд╢рди рдпрд╛ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рддрдм рддрдХ рдирд╣реАрдВ рд░рдЦрдирд╛ рдЬрдм рддрдХ рдХрд┐ рдПрд╕рдПрд╕рдЖрд░ рдорд╛рдорд▓реЗ рдкрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдЪрд░рдг рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рди рд╣реЛред
@gaearon рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдПрдХ рдбреАрдУрдПрдо рдорд╛рдирдХ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░рддрд┐ "рдбрдмреНрд▓реНрдпреВрд╕реА рд╕рдореБрджрд╛рдп" рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧ рдЙрд╕реА рддрд░рд╣ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЖрджрд┐рдо рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рд▓реЛрдЧ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред
рдЙрд╕ рдиреЗ рдХрд╣рд╛, рд╕рдордп рдХреЗ рд╕рд╛рде рдХрдИ рдкреИрдЯрд░реНрди рд╕рд╛рдордиреЗ рдЖрдП рд╣реИрдВ рдФрд░ рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рдврд╛рдВрдЪреЗ (рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдЗрд╕ рдбреЛрдо рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк https://custom-elements-everywhere.com/ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рдлреНрд░реЗрдорд╡рд░реНрдХ/рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рд░рд┐рдПрдХреНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рдЪреБрдиреЗ рд╣реИрдВред рдЗрд╕ рдЕрдВрдХ рдореЗрдВ, рдЪреБрдиреЗ рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╡рд┐рдХрд▓реНрдк 1, 2 рдФрд░ 3 рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЛрдИ рдврд╛рдВрдЪрд╛/рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рдХрд▓реНрдк 4 рдпрд╛ 5 рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ/рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирддрд╛ рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк 1-3 рдореЗрдВ рд╕реЗред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдХреЛ рд╡рд┐рдХрд▓реНрдк 4 рдпрд╛ 5 рдЪреБрдирдХрд░ рдкрд╣рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдпрд╛ рдбреАрдУрдПрдо рдорд╛рдирдХреЛрдВ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд░рдЦрд░рдЦрд╛рд╡ рдпреЛрдЧреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрдореВрд▓рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ (рдиреАрдЪреЗ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде), рдЪреВрдВрдХрд┐ рд╡рд┐рдХрд▓реНрдк 3 JSX рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡рд┐рдХрд▓реНрдк 4 рдФрд░ 5 рдХреЛ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ WC рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд╛рдВрдЫрдиреАрдп рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо 1 рдпрд╛ 2 рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдП рд╣реИрдВ .
рдФрд░ рдЪреВрдВрдХрд┐ 1 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдЕрд╕реНрдерд┐рд░ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд▓реНрдк 2 рдПрдХ рд╣реИ? рдкреНрд░реАрдПрдХреНрдЯ рдпрд╣ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдУ?
рдХреЛрдИ рдврд╛рдВрдЪрд╛/рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рдХрд▓реНрдк 4 рдпрд╛ 5 рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИред
( @TimvdLippe https://github.com/facebook/react/issues/11347#issuecomment-713474037) рдореЗрдВ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдХреЗрд▓реЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдирдпрд╛ JSX рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред
( @gaearon https://github.com/facebook/react/issues/11347#issuecomment-713210204 рдореЗрдВ)
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╣рд╛рдБ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╕рд╛рд░рд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ
рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдЧреБрдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЧреБрдг рд╕реЗрдЯ рдХрд░рдирд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдмреВрд▓рд┐рдпрди рдЬреИрд╕реЗ рд╕рд░рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдорд╛рдорд▓реЗ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реАрдзреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ iconname рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрднреА рднреА рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдлреА рд╣рдж рддрдХ рдПрдХ рд╣реА рдЕрдВрддрд┐рдо рдкреНрд░рд╕реНрддреБрдд рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред
рдореИрдВ рдХрд╛рдлреА рдлреЙрд▓реЛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░реЗ рдХрд╛рд▓реНрдкрдирд┐рдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдереА https://github.com/facebook/react/issues/11347#issuecomment рдЬреЛ рдПрдХ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдлреЗрдВрдХрдирд╛ рд╕рдм рдкрд░ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЬреЗрдирд░реЗрдЯ HTML рдореЗрдВ рдЧреБрдг, рдХреЗ рдЕрд▓рд╛рд╡рд╛ рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рдерд╛ -+ренрез,рейреи,реирей,ремреирео
<github-icon iconname="smiley" />
<github-icon icon={{ name: "smiley" }} />
рдзрдиреНрдпрд╡рд╛рдж!
рдХреНрдпрд╛ рдЗрд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде React.createElement()
рдЬрдЧрд╣ рдПрдХ рд╢рд┐рдо рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛, рдЬреЛ рдЕрдВрджрд░ рдЧреБрдг рдореИрдкрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ?
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
/** <strong i="8">@jsx</strong> h */
import { h } from 'react-wc-jsx-shim';
function Demo({ items }) {
return <my-custom-list items={items} />
}
рдорд╕реМрджрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
export function h(element, props, children) {
if(typeof element === 'string' && element.includes('-')) {
return React.createElement(Wrapper, { props, customElementName: element }, children)
}
return React.createElement(element, props, children);
}
function Wrapper({customElementName, props}) {
const ref = React.useRef();
React.useEffect(() => {
for(const prop in props) {
ref.current[prop] = props[prop];
}
});
return React.createElement(customElementName, { ref, ...props });
}
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдХрдо рдУрд╡рд░рд╣реЗрдб рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдирдмреНрд▓реЙрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
@ рдЬрд╕реНрдЯ-рдмреЛрд░рд┐рд╕ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдРрдк рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдм рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рддреЛ createElement
рдкреИрдЪ рдпрд╛ рдПрдХ рд░реИрдкрд░ рдХреЗ рд╕рд╛рдеред рдЖрдкрдХреЛ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд╡рд┐рд╢реЗрд╖-рдЖрд╡рд░рдг рд╡рд╛рд▓реЗ рд╕рдВрдкрддреНрддрд┐ рдирд╛рдореЛрдВ рдХреЛ рднреА рдмрд╛рд╣рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЛрдИ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рд╕реВрдЪреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ ['children', 'localName', 'ref', 'elementRef', 'style', 'className']
рдЬреИрд╕реЗ рдПрдХ рдЗрдирдХрд╛рд░ рд╕реВрдЪреА рдХреЛ рд╣рд╛рд░реНрдб рдХреЛрдб рдХрд░рддреЗ рд╣реИрдВред
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░реЗрдл-рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЧреБрдг рд╕рд░реНрд╡рд░ рдкрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЪрд┐рдВрддрд╛ рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд╣рддрд╛ рд╣реВрдВред рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЧреБрдг рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЧреБрдг рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрд░реАрдХрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдЕрдЪрд╛рдирдХ SSR рдХреЛ рдареАрдХ рдпрд╛ рддреЛрдбрд╝ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд╕рдПрд╕рдЖрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдЕрдзрд┐рдХ рдЪрд┐рдВрддрд┐рдд рд░рд╣реВрдВрдЧрд╛ред рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдмреБрдирд┐рдпрд╛рджреА рдбреЛрдо рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдЫреЗрдж рд╣реИред
рдХреНрдпрд╛ рдЗрд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде React.createElement() рдХреА рдЬрдЧрд╣ рдПрдХ рд╢рд┐рдо рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛, рдЬреЛ рдЕрдВрджрд░ рдЧреБрдг рдореИрдкрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ?
рдЬреИрд╕рд╛ рдХрд┐ рдореВрд▓ рдЕрдВрдХ рдореЗрдВ рд░реЙрдм рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЕрддреАрдд рдореЗрдВ https://github.com/skatejs/val рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо JSX рдкреНрд░рд╛рдЧреНрдорд╛ рд╣реЛрдирд╛ рдЬреЛ React.createElement
рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИ - рд╕рдВрднрд╡рддрдГ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ - рд╕рдорд╛рдзрд╛рдиред
рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрдХреЗрдЯ рдХреА рдбрдмреНрд▓реНрдпреВрдЖрдИрдкреА рд╢рд╛рдЦрд╛ рднреА рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЧрд╣рд░реЗ рдФрд░ рдЙрдерд▓реЗ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдХрд╛рдо рд╕реЗ рдЕрдм рддрдХ рдХреА рд╕реАрдЦ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЧрд╣рди рдПрд╕рдПрд╕рдЖрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рднреА рдЬреЗрдПрд╕рдПрдХреНрд╕ рд░реИрдкрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдкреАрдЖрдИ рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред (рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рд╕реНрдХреЗрдЯ рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдПрдХ рдореБрдЦреНрдп рдХрд╕реНрдЯрдо рддрддреНрд╡ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░ рдмреЛрд░реНрдб рднрд░ рдореЗрдВ рдЦрдкрдд рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реБрд╕рдВрдЧрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЬрд╛рд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдЫреЛрдЯреА рдкрд░рддреЗрдВ рд╣реИрдВред)
рдореИрдВ рдЕрдм рдУрдкрди рд╕реЛрд░реНрд╕ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛, рдФрд░ рди рд╣реА рдЕрдм рдЯреНрд╡рд┐рдЯрд░ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдмреЗрдЭрд┐рдЭрдХ рдореЗрд░реА рд░рд╛рдп рдирдордХ рдХреЗ рджрд╛рдиреЗ рдХреЗ рд╕рд╛рде рд▓реЗрдВред
рд╡рд┐рдХрд▓реНрдк 1 рдРрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк 2 рдХреЗ рд▓рд┐рдП рд╢реИрддрд╛рди рдХреЗ рд╡рдХреАрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИред
рд╡рд┐рдХрд▓реНрдк 2 рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░реАрдПрдХреНрдЯ рдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдХрд░реАрдм рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдорд┐рд╕рд╛рд▓ рдФрд░ рдПрдХ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдорд╛рдирдХ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ (рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реИрд╕реЗ рднреА рдХрд░рдирд╛ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛; JSX рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрджрдо рднреА рд╣реИред (рд╡рд┐рдХрд▓реНрдк 1 рдХреЗ рд╡рд┐рдкрд░реАрдд)ред
рд╡рд┐рдХрд▓реНрдк 3 рдХрд╛рдЧрдЬ рдкрд░ рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдУрд╡рд░рд╣реЗрдб рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдХрд▓реНрдк 2 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛрдЧрд╛, рдЙрдХреНрдд рдУрд╡рд░рд╣реЗрдб рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг, рдФрд░ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд╕рд╛рде рдЕрдЬреНрдЮрд╛рддред
рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рдХрд▓реНрдк 4 рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЕрдм рдпрд╣ рдкрд╕рдВрдж рд╣реИред рдЖрдк рдЗрд╕реЗ рдЕрдзрд┐рдХ рдСрдкреНрдЯ-рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдк рд╕реНрдкрд╖реНрдЯ props
рдФрд░ events
( attrs
рдмрдЬрд╛рдп) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╡рд┐рдХрд▓реНрдк 2 рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЗ рдХрдо рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рд╡рд┐рдХрд▓реНрдк 5 рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдореВрд▓ рдореБрджреНрджреЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдПрдХ рддрд░рдл, рдореИрдВ рдЗрд╕ рдкрд░ рдХрд░реНрд╖рдг рджреЗрдЦрдХрд░ рдмрд╣реБрдд рдЦреБрд╢ рд╣реВрдВ рдФрд░ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд╕рдм рдЕрдЪреНрдЫрд╛ рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ!
рдпрджрд┐ рдкреНрд░рдпреЛрдХреНрддрд╛ рднреВрдорд┐ рдореЗрдВ рдХреЛрдИ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рд╕рдореЗрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рддреГрддреАрдп-рдкрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рд░рд┐рдПрдХреНрдЯ рдХреЛрд░ рдЯреАрдо рдХреЛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреА рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдкреНрд░рдпреЛрдХреНрддрд╛ рднреВрдорд┐ рдореЗрдВ рдХреЛрдИ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рд╕рдореЗрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ [рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ] рдмрд╛рд╣рд░ рд╕реЗ рдкреИрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдпреВрдЬрд░рд▓реИрдВрдб рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдФрд░ рдпрд╣ рдЬреИрд╕реЗ рд░реИрдкрд░ рд╣реИрдВред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪрд┐рдд рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛, рдФрд░ рд░реИрдкрд┐рдВрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдореИрдВ
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ vuejs/vue#7582 рдореЗрдВ, Vue рдиреЗ рд╕рд┐рдЧрд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪреБрдирд╛, рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ "ред" рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ (рдЧреНрд▓рд┐рдорд░ рдХрд╛ "@" рдирд╣реАрдВ)ред
рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмрдпрд╛рди рдХрд╛ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИ (рдФрд░ рд╢рд╛рдпрдж Vue рдХреЗ рдХрд░реАрдм рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ Vue 3.0 рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд▓реНрдк 2 рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ Preact рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред (рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦреЗрдВред)
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░реЗрдл-рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЧреБрдг рд╕рд░реНрд╡рд░ рдкрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЪрд┐рдВрддрд╛ рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд╣рддрд╛ рд╣реВрдВред рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЧреБрдг рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЧреБрдг рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрд░реАрдХрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдЕрдЪрд╛рдирдХ SSR рдХреЛ рдареАрдХ рдпрд╛ рддреЛрдбрд╝ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк https://github.com/facebook/react/issues/11347#issuecomment -713514984 рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдкреВрд░реЗ рдЗрдЪреНрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрд░рдордмрджреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреНрд░реАрдПрдХреНрдЯ + рдбрдмреНрд▓реНрдпреВрд╕реА рджреЗрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдпрд╣рд╛рдВ рдареЛрдХрд░ рдЦрд╛рдИ, рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ "рд╡рд┐рдХрд▓реНрдк 2" рди рдХреЗрд╡рд▓ рдПрдХ _рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди_ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ _рдЕрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди_ рднреА рд╣реИ (рдкреНрд░реАрдХреНрдЯ рдЕрднреА рднреА рдХреЗрд╡рд▓ рд╡реИрдз рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдШреЛрд╖рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред
рдЕрдиреБрдорд╛рдиреА рдХреЗ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рднреА, рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рд╢рд╛рдпрдж рд╣реА рд╡рд╛рдВрдЫрдиреАрдп рд▓рдЧрддрд╛ рд╣реИред
рдкреНрд░реАрдПрдХреНрдЯ рдХрд╛ рдЕрдиреБрдорд╛рдиреА ("рд╡рд┐рдХрд▓реНрдк 2") рдЙрди рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИ рдЬрд┐рдирдХрд╛ рд░рд┐рдПрдХреНрдЯ (рдХреБрдВрдЬреА, рдмрдЪреНрдЪреЗ, рдЖрджрд┐) рдпрд╛ рдкреНрд░реАрдПрдХреНрдЯ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рд╣реИ (рдХреБрдЫ рднреА on
)ред
рдпрд╛рдиреА JSX рдХреЗ рдиреАрдЪреЗ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:
<web-component key={'key'} ongoing={true} children={[1, 2]} />
properties key
, ongoing
рдФрд░ children
рд╕рднреА undefined
(рдпрд╛ рдЬреЛ рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИ) web-component
рдХреЗ рдмрдирд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╣реЛрдВрдЧреЗред
рд╕рд╛рде рд╣реА, рдУрдкреА рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рднреА рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реЗрдм рдШрдЯрдХ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП lit-element
) рд╢реБрджреНрдз HTML рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рдордмрджреНрдз рд╕рдореГрджреНрдз рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдРрд╕реЗ рдШрдЯрдХреЛрдВ рдХреЛ рд░рд┐рдПрдХреНрдЯ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ
<web-component richdata={JSON.stringify(something)} />
рдЬреЛ "рд╡рд┐рдХрд▓реНрдк 2" рдЪреБрдиреЗ рдЬрд╛рдиреЗ рдкрд░ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХрд╛ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдХрд┐рддрдирд╛ рдЖрдо рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдХреЛрдб рдмреЗрд╕ рд╣реИрдВ рдЬреЛ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдХрдо рдХреБрд╢рд▓ рд╣реИ рддреЛ рд░реЗрдлрд░реА рд▓реЗрдХрд┐рди рдЯрд░реНрд╕рд░ рднреА рд╣реИред
рдЕрдВрдд рдореЗрдВ, рд╡реЗрдм рдХрдВрдкреЛрдиреЗрдВрдЯ рдХрд╛ рд▓реЗрдЦрдХ рдПрдХ рд╣реА рдирд╛рдо рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджрд╛рд░реНрде рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╡реЗрдм рдШрдЯрдХ рд╣реЛрдЧрд╛ рдЬреЛ рдореВрд▓ input
рддрддреНрд╡ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ - рд╡рд┐рд╢реЗрд╖рддрд╛ value
рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рд╕рдВрдкрддреНрддрд┐ value
рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд╣реЗрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЬреЗрдПрд╕рдПрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЕрдЧрд░ рдЗрд╕реЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕реВрдХреНрд╖реНрдо рдЯреВрдЯрдирд╛ рдХрд╛ рдЕрдиреБрднрд╡ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдХреЗрд▓реЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдирдпрд╛ JSX рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред
рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? https://github.com/facebook/jsx/issues/66 рдореЗрдВ react
рдиреЗрдорд╕реНрдкреЗрд╕ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ key
рдФрд░ ref
ред рдЙрд╕реА рдкрдВрдХреНрддрд┐ рдХреЗ рд╕рд╛рде, рдХреНрдпрд╛ react-dom
рдЬреИрд╕рд╛ рдХреБрдЫ рдбреАрдУрдПрдо рдЧреБрдгреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдЯрдХрд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдареАрдХ рдирд╛рдорд╕реНрдерд╛рди рд╣реЛрдЧрд╛? рдУрдкреА рдХреЗ рд╡рд┐рдХрд▓реНрдк 3 рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд╡рд╣ рд╣реЛрдЧрд╛:
<custom-img react-dom:src="corgi.jpg" react-dom:hiResSrc="[email protected]" width="100%">
рдпрд╣ рд╕рдмрд╕реЗ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдирд╣реАрдВ рд╣реИред рдмрд╕ dom
рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдЙрди рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЯрдХрд╕рд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬреЛ react
рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдкрд░ рдЦрд░рд╛рдм рдПрд░реНрдЧреЛрдиреЙрдорд┐рдХреНрд╕ рджреБрдирд┐рдпрд╛ рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧ рдХрдо рдЖрдо рдорд╛рдорд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ SSR рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛрддреА рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдпрд╛ рдЧреБрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП), рдФрд░ рдпрд╣ рдареАрдХ рдЙрди рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП SSR рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд╛рдЗрдбреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЗрдПрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рдПрдХ _рдЕрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди_
(рдкреНрд░реАрдПрдХреНрдЯ рдЕрднреА рднреА рдХреЗрд╡рд▓ рдорд╛рдиреНрдп рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдШреЛрд╖рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ)
@brainlessbadger рдХреНрдпрд╛ рдЖрдк рдКрдкрд░ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ? рдЙрджрд╛. рдХреМрди рд╕реЗ рд╡реЗрдм рдШрдЯрдХ/рдХрд╕реНрдЯрдо рддрддреНрд╡ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде)? рдФрд░ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ?
@karlhorky рдореИрдВрдиреЗ рдПрдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЬреЛрдбрд╝рд╛ред рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВред
рд╡реЗрдм рдШрдЯрдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред рдХреНрдпрд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдЯрдХрд░рд╛рдиреЗ рд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрд╡рд░реЛрдз рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрднреА рддрдХ рдХреЛрдИ рд╕рд╣рдорддрд┐ рд╣реИ?
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрди рд╕рднреА рдХреА рддрд░рд╣ HTMLElement рдореЗрдВ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЬреЛрдбрд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЬреЛрдбрд╝реЗ рд╣реИрдВ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдЕрднреА рднреА рдирдП рдЬреЛрдбрд╝реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдХрд╕реНрдЯрдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рдХрд╕реНрдЯрдо рдИрд╡реЗрдВрдЯ рдХреЗ рдирд╛рдо рдкрд░ -
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдФрд░ рдХреБрдЫ рднреА рдПрдХ рд╕рдордЭреМрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рдШрдЯрдХ рдХреЗ рдЬреЛрдЦрд┐рдореЛрдВ рдХреЛ рддреМрд▓рддрд╛ рд╣реИ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдХреА рдХрд▓реНрдкрдирд╛ рдХреЛ рдПрдХ рдЕрдЪреНрдЫреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред
рдШрдЯрдирд╛рдПрдБ рдореБрдЭреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЙрд╕ рдШрдЯрдХ рдХреЗ рдЕрд╕рдВрдЧрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЬреЛрдЦрд┐рдо рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдирдпрд╛ рдИрд╡реЗрдВрдЯ рдмрдмрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕ рдЯреНрд░реА рдкрде рдХреЗ рд╕рднреА рдореМрдЬреВрджрд╛ рд╡реЗрдм рдШрдЯрдХ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ рдХрд╕реНрдЯрдо рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рдирд╛рдо рдкрд░ -
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЕрдиреБрдорд╛рдиреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдмрд┐рд▓реНрдЯ-рдЗрди рд╡рд╛рд▓реЗ рдХреЛ рд╕реНрдкреЗрд╢рд▓ рдХреЗрд╕ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдХрд┐ рд╣рдо рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдЧреБрдгреЛрдВ рдХреЛ рддрдм рдПрдХ рдЕрдЪреНрдЫрд╛ рд╢реЙрд░реНрдЯ рд╣реИрдВрдб рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрддрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рд╡реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЧреБрдгреЛрдВ рдХреЛ рдЫрд╛рдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЧреБрдгреЛрдВ рд╕реЗ рдирд╣реАрдВ рдЯрдХрд░рд╛ рд╕рдХрддреЗред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдХрд╕реНрдЯрдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╛ рдХрд╕реНрдЯрдо рдИрд╡реЗрдВрдЯ рдХреЗ рдирд╛рдо рдкрд░ - рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯ рд╕реНрдкреЗрдХ рдореЗрдВ рдРрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдз рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдХрд╛рдлреА рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдЧреАред
рдХрд╕реНрдЯрдо рддрддреНрд╡ рд▓реЗрдЦрдХреЛрдВ рд╕реЗ рдХрд┐рд╕реА рдврд╛рдВрдЪреЗ рдХреА рдордирдорд╛рдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдп рдФрд░ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣рд░ рдврд╛рдВрдЪреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рдпрд╣ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╣рд░рд╛ рджреЗрддрд╛ рд╣реИред рдореИрдВ
рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдврд╛рдВрдЪреЗ рдХреЛ рдорд╛рдирдХ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред setAttribute()
рдФрд░ dispatchEvent()
рдХреЗрд╡рд▓ рдЧреИрд░-рд╡реЗрдм-рдШрдЯрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреАрдЖрдИ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рд╕реЗ рдордирдорд╛рдиреЗ рдирд╛рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИред рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдореЗрдВ рдХреЛрдИ рднреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рдХреЛ рдЖрдЧ рд▓рдЧрд╛ рд╕рдХрддреА рд╣реИ - рдпрд╣ рд╕рд┐рд░реНрдл рдбреЛрдо рдХреА рдЬрдореАрдиреА рд╕рдЪреНрдЪрд╛рдИ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ data-
рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдк рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╣реИред рдЖрдк рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рднреА рдкреИрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓/рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВред
рдореИрдВ рдпрд╣ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреВрдВрдЧрд╛ рдХрд┐ рд╕рд┐рд░реНрдл рд░рд┐рдПрдХреНрдЯ рдЗрд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐ рд╕рдореБрджрд╛рдп рдЗрд╕ рд╕рдореНрдореЗрд▓рди рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рдирд╛рдорд╕реНрдерд╛рди рдХреА рд░рдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рд╡реЗрдм рдХреЗрд╡рд▓ рдирдП рдПрдкреАрдЖрдИ рдореЗрдВ рдЕрдЬреАрдм рдирд╛рдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд░реНрдмрд╛рдж рд╣реИред
рдореБрдЭреЗ рдПрд╕рдПрд╕рдЖрд░ рд╕реЗ рдЧреИрд░-рдмрд┐рд▓реНрдбрд┐рди рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЧреБрдг рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдШреЛрд╖рдгрд╛рддреНрдордХ рдЫрд╛рдпрд╛ рдбреЛрдо рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдареЛрд╕ рд░реВрдк рд╕реЗ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдПрд╕рдПрд╕рдЖрд░ + рдПрдПрдордкреА рдХреЗ рд╕рд╛рде рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореМрдЬреВрджрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдк рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдПрдордкреА рд░рдирдЯрд╛рдЗрдо рдкрд╣рд▓реЗ рд╣реА рд▓реЛрдб рд╣реЛ рдЪреБрдХрд╛ рд╣реИред
рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╡рд┐рдХрд▓реНрдк 3 рдкрд░ рджрд░рд╡рд╛рдЬрд╛ рдмрдВрдж рдирд╣реАрдВ рд╣реИ, рд╡рд┐рдХрд▓реНрдк 2 рдкрд░ рдЗрд╕рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд╣реИ, рдКрдкрд░ рджрд┐рдП рдЧрдП рд╡рд┐рдкрдХреНрд╖ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИ - рд╡рд┐рдХрд▓реНрдк 2 рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реА рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рд╡реЗрдм рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЗрд╢рд╛рд░рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдХреА рдУрд░ рд╕реЗ, рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдЕрдиреНрдп рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рдорд░реНрдерди (рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП) рдКрдкрд░ рдФрд░ рдЙрд╕рд╕реЗ рдЖрдЧреЗ рдЬрд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╡рд╕реНрддреБ рдЧреБрдгреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреЗрд╣рддрд░ред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЖрдо рд╕рд╣рдорддрд┐ рд╣реИ рдХрд┐ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдХрднреА-рдХрднреА JSON рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рд╕реЗрдЯ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ, рд╕рд┐рдВрдЧрд▓ рдХреЛрдЯреНрд╕ рдореЗрдВ рд▓рд┐рдкрдЯреЗред
рдПрдПрдордкреА рдПрдХ рдФрд░ рд╕рдореНрдореЗрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ - рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд╛рд░ = рдПрдкреНрд▓рд┐рдХреЗрд╢рди.рдЬреЗрд╕рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЙрдЪрд┐рдд (рд▓реЗрдХрд┐рди рд╡рд░реНрдмреЛрдЬрд╝) рд╡рд┐рдХрд▓реНрдк рд╣реИред
рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖рддрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХреЗ рд░рд╣рдирд╛:
рд╡реЗрдм рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рддрдм рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓реНрдп рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рддреЛ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рджреЗрд░реА рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛:
<github-icon icon='{"name":"smiley"}'></github-icon>
рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рджреМрд░рд╛рди рдлрд┐рд░ рдЬреАрдердм-рдЖрдЗрдХрди рддреБрд░рдВрдд рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ JSON.parse рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП (рдЕрдзрд┐рдХ рдкреВрд░реНрдг?) рдСрдмреНрдЬреЗрдХреНрдЯ рд╡реИрд▓реНрдпреВ рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░рдиреА рдкрдбрд╝рддреА рд╣реИред
рддреЛ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рд╕реНрдерд┐рддрд┐ рд╣реИ - рдпрджрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рддрд┐рдкрд╛рджрди, рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ "рдЖрдЗрдХрди" рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓реНрдп рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ, рдЬреЛ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдПрд╕рдПрд╕рдЖрд░ рддрдВрддреНрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд░реЗрдЧрд╛ред рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╣рдо рд╕реАрдзреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧрд┐рдВрдЧ рдФрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдКрдкрд░реА рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рдирд╣реАрдВ рдЧреБрдЬрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдмреЗрд╢рдХ, рдХреБрдЫ рдЧреБрдг рдРрд╕реА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧрд┐рдВрдЧ/рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЙрди рдЧреБрдгреЛрдВ рдХреЛ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрдЧреАред
рдпрджрд┐ рд╕рднреА рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдиреЗ рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдХреЗ рдкрд╕рдВрджреАрджрд╛ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди (рд╢рд╛рдпрдж) рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ - рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдбреИрд╢ рдереЗ, рдФрд░ рд╕рднреА рдЧреБрдг рдХреИрдорд▓рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдорд┐рд╢реНрд░рд┐рдд рдирд╛рдо рдереЗ, рд╢рд╛рдпрдж рдбреИрд╢ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
<github-icon my-icon={myStringifiedProperty} myIcon={myObjectProperty}></github-icon>
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдмрдирд╛рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд╣рдо рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдФрд░ рд░рд┐рдПрдХреНрдЯ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗрд╡рд▓ рдпрд╣ рдорд╛рди рд╕рдХрддреА рд╣реИ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рддрд╛/рд╕рдВрдкрддреНрддрд┐ рдХреБрдВрдЬреА рдКрдВрдЯ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ JSON-stringified рдХреНрд░рдордмрджреНрдзрддрд╛ рдпрджрд┐ рдпрд╣ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рджреМрд░рд╛рди рд╕реЗрдЯ рд╣реИред рдЗрд╕реА рддрд░рд╣, рдХреБрдВрдЬреА рдореЗрдВ рдбреИрд╢ (рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдФрд░ рдмрд╕ рдорд╛рди рдХреЗ .toString() рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдорд╛рдирддрд╛ рд╣реИред рдФрд░ рдПрдХрд▓ рд╢рдмреНрдж рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдирд╛, рдЬрд┐рд╕реЗ рдорд╛рдиреНрдп HTML рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ HTMLElement рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдм рдШрдЯрдХ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реЛрдЧреАред рдореИрдВ W3C рдХреЗ "рдЖрд░рдХреНрд╖рд┐рдд" рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ, рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдХреБрдВрдЬреА рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╡реЗ рдПрдХ рдЖрд░рдХреНрд╖рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдХрд╛ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЦреЛрдЬрдиреЗ рд╡рд╛рд▓реЗ рдврд╛рдВрдЪреЗред
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд▓реНрдк 3 рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП @gaearon рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реЛрдЧрд╛:
<github-icon icon={myDynamicIcon}/>
рдорддрд▓рдм рд╡рд┐рд╢реЗрд╖рддрд╛ (toString ())ред
<github-icon icon:={myDynamicIcon}/>
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ - рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рджреМрд░рд╛рди, рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА (рд╣рд╛рдЗрдбреНрд░реЗрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рдж) рд╕реЗ рдмрд╛рдВрдзреЗрдВред
рдЕрдм рдкрд░рд┐рджреГрд╢реНрдп (рдХреБрдЫ?) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЯреАрдо рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ? рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд┐рд░реНрдл рдХреБрдЫ рдЕрдиреНрдп рд╕рддрд░реНрдХ рдерд╛, рдЬреИрд╕реЗ рдХрд┐ рджреЛ рдХреЛрд▓рди:
<github-icon icon::={myDynamicIcon}/> //Not my final suggestion!
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛, рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рджреМрд░рд╛рди, JSON.stringify рд╕рдВрдкрддреНрддрд┐, рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП HTML рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ рдЬрдм рд╕рдВрдкрддреНрддрд┐ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЗ рдмрд╛рдж рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣реЛред
рдпрд╣ рдЬрдЯрд┐рд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдХреА рдореБрд╢реНрдХрд┐рд▓ рд╕реНрдерд┐рддрд┐ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдпрд╛рдиреА рдЕрдЧрд░ рд╣рдо рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:
<github-icon iconProps::={myDynamicIconProp}/> //Not my final suggestion!
рдпрд╣ рдЕрддреАрдд рдореЗрдВ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдирд╣реАрдВ рдерд╛ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдирд╛рдо рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдЗрдХрдирдкреНрд░реЙрдкреНрд╕ рдЖрдЗрдХрди-рдкреНрд░реЙрдкреНрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╢рд╛рдпрдж рдпрд╣ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрди рд╡реЗрдм рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдбреИрд╢ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдЧреБрдг рдХреИрдорд▓рдХреЗрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред рдореЗрд░реЗ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП, рдЕрднреА рддрдХ рдПрдХ рдореВрд▓ рддрддреНрд╡ рдирд╣реАрдВ рд╣реИ рдЬреЛ JSON deserializing рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЧреБрдЬрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рддреЛ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рддреЛ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдбреИрд╢ рдХрдм рдбрд╛рд▓рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ?
рдПрдХрдорд╛рддреНрд░ (рдмрджрд╕реВрд░рдд?) рд╕реБрдЭрд╛рд╡ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЖ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ:
<github-icon icon-props:iconProps={myDynamicIconProp}/>
рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ, рд╕рд░реНрд╡рд░ рдкрд░, рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдЗрдХрди-рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ iconProps, рд╕реАрдзреЗ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИред
рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдПрдХ рдФрд░ (рд▓рдВрдмрд╛ рд╢реЙрдЯ?) рд╕рдВрднрд╛рд╡рд┐рдд рд▓рд╛рдн, рдПрдХ рд╕рдВрдХрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ / рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рд╣реИ: рдпрд╣ рдореВрд▓ рддрддреНрд╡ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рддреЗрдЬрд╝ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрдЬрд╛рдп, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреЗ рд▓рд┐рдП рдЧреБрдг рдЬреЛ рддрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рд░рд┐рдПрдХреНрдЯ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдЕрдиреБрд╡рд╛рдж рдХреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХреЗ рдЙрд╕реА рдореБрджреНрджреЗ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╣ рд╕рдВрдХреЗрддрди рд╣рд▓ рдХрд░реЗрдЧрд╛?
@bahrus рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
<my-element attr='using-quotes' property={thisIsAnObject} />
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
HTML рдлреЙрд░реНрдо рддрддреНрд╡ рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред "рдпреМрдЧрд┐рдХ рдирд╛рдо" рд╡рд╛рд▓реЗ рд╕рднреА рдПрдХ рд╕реБрд╕рдВрдЧрдд рдирд╛рдордХрд░рдг рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдЖрдо рддреМрд░ рдкрд░ рдпрд╣ рд╕рднреА рдирд┐рдЪрд▓реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛрдИ рд╡рд┐рднрд╛рдЬрдХ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдПрдХ рдбреИрд╢ рд╡рд┐рднрд╛рдЬрдХ рд╣реЛрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рд╕реНрд╡реАрдХрд╛рд░-рд╡рд░реНрдгрд╕реЗрдЯ", рдХрднреА-рдХрднреА рдирд╣реАрдВ - - "рдирд╡реАрдиреАрдХрд░рдг"ред
рд╕рдВрдмрдВрдзрд┐рдд рдЬреЗрдПрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рдпрд╛ рддреЛ рдПрдХ рдЕрдЪреНрдЫреЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреИрдЯрд░реНрди рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдПрдХреНрд╕реЗрдкреНрдЯ рдЪрд╛рд░рд╕реЗрдЯ, рдиреЛ рд╡реИрд▓рд┐рдбреЗрдЯред рдиреЛрд╡реИрд▓рд┐рдбреЗрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА / рдиреЛрд╡рд╛рд▓рд┐рдбреЗрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдмреВрд▓рд┐рдпрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░, myForm.setAttribute('novalidate', '') рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП myForm.noValidate = true рдХреЗ рд╡рд┐рдкрд░реАрдд myForm.setAttribute('novalidate', '') рдХрд░рдирд╛ рдмреЗрдХрд╛рд░ рд╣реЛрдЧрд╛ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ)ред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рд░реНрд╡рд░ рдкрд░, myForm.noValidate = true рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо DOM рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<form novalidate={shouldNotValidate}>
рдЕрд╕рд▓ рдореЗрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ/рдЬреЗрдПрд╕рдПрдХреНрд╕ рдореЗрдВ рдПрдХ рдмреВрд▓рд┐рдпрди рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд, рд╕реНрдерд┐рд░ рд▓реБрдХрдЕрдк рдЯреЗрдмрд▓ рдкрд░, рдЬреЛ (?) рдЕрддреНрдпрдзрд┐рдХ рдХрдареЛрд░ рд▓рдЧрддрд╛ рд╣реИ ред рдЕрдЧрд░ рдореИрдВ рдЗрддрдирд╛ рдмреЛрд▓реНрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдФрд░ рдХреНрд╖реЗрддреНрд░ рд░рд┐рдПрдХреНрдЯ/рдЬреЗрдПрд╕рдПрдХреНрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдЖрд░рдПрдлрд╕реА рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдбреАрдУрдПрдо рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП?
рд╣рдо рдЗрди рд╕рднреА рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рд╕рд░реНрд╡рд░ (рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ (рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рддреНрдпрд╛рдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рд╣реЛ? рдПрдХ рдмреВрд▓рд┐рдпрди рдЬреИрд╕реЗ рдиреЛрд╡рд╛рд▓рд┐рдбреЗрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рджреВрдВрдЧрд╛:
<form novalidate:noValidate?={shouldNotValidate}/>
рдпрджрд┐ рд░рд┐рдПрдХреНрдЯ рдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбреАрдУрдПрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛, рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЧрдиреНрджрд╛, рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд▓рдВрдмрд╛ рд╕рдлрд░ рддрдп рдХрд░реЗрдЧрд╛, рдЬреЛ рд╢рд╛рдпрдж рдирд╛рдордХрд░рдг рдкреИрдЯрд░реНрди рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИрдВред
рд╕рд░реНрд╡рд░ рдкрд░ JSON.stringify рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдбрд╝реА рдЬреАрдд рд╣реЛрдЧреА, рдРрд╕рд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред
рдпрд╛ рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рди рдХреБрдЫ рднреВрд▓ рд░рд╣рд╛ рд╣реВрдВ? ( @eavichay , рдЖрдк рдХреИрд╕реЗ рд╕реБрдЭрд╛рд╡ рджреЗрдВрдЧреЗ рдХрд┐ рдЗрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ)ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣реЗ рджреЛрд╕реНрддреЛрдВ, рдЗрд╕ рдмреАрдЪ рдЬрдм рд╣рдо рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЖрдкрдХреЗ рд╡реЗрдм рдШрдЯрдХ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд┐рдо рдмрдирд╛рдпрд╛ рд╣реИ https://www.npmjs.com/package/reactify-wc
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╕рд╛рдмрд┐рдд рд╣реЛрдЧрд╛
(рдпрд╣ рдУрдПрд╕рдПрд╕ рдореЗрдВ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рд╡реЗрд╢ рд╣реИ, рдФрд░ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рд╕реЗ рдмрд╛рд╣рд░ рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рдкрд╣рд▓реА рдУрдкрди рд╕реЛрд░реНрд╕рд┐рдВрдЧ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рд╕реНрд╡рд╛рдЧрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ ЁЯШД)