рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд▓рд┐рдЦрдирд╛, рднрд╛рдЧ 3: рд╕рд╣рд╛рд░рд╛ рдХрд╛ рдХреНрд░рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рд▓рд┐рдЦрдирд╛, рднрд╛рдЧ 1: рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд╕рд╣рд╛рд░рд╛ рди рдмрдирд╛рдПрдВ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рд▓рд┐рдЦрдирд╛, рднрд╛рдЧ 2: рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╛рдо рджреЗрдВ, рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдирд╣реАрдВ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд▓рд┐рдЦрдирд╛, рднрд╛рдЧ 3: рд╕рд╣рд╛рд░рд╛ рдХрд╛ рдХреНрд░рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ

рд░рд┐рдПрдХреНрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд▓рд┐рдЦрдирд╛, рднрд╛рдЧ 4: рдПрдкреНрд░реЛрдкреИрдХрд▓рд┐рдкреНрд╕ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ!

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рд▓рд┐рдЦрдирд╛, рднрд╛рдЧ 5: рдмрд╕ рдЙрдкрдпреЛрдЧ рд╕рдВрд░рдЪрдирд╛

рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рднрд╛рдЧ 6: рд╣рдо рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ

рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬреЛ рдПрдХ рд▓рдВрдЧрд░ рдЯреИрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:


рд▓рд┐рдВрдХ


<Link href="sid.studio">Click me</Link> //   : <a href="sid.studio" class="link">Click me</a> 

рдпрд╣рд╛рдБ рдШрдЯрдХ рдХреЛрдб рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:


 const Link = props => { return ( <a href={props.href} className="link"> {props.children} </a> ) } 

рд╣рдо HTML рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХреЛ рднреА рдПрд▓рд┐рдореЗрдВрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ id , target , title , data-attr , рдЖрджрд┐ред


рдЪреВрдВрдХрд┐ рдмрд╣реБрдд рд╕реА HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВ, рд╣рдо рдХреЗрд╡рд▓ рд╕рднреА рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ className )


(рдиреЛрдЯ: рдЖрдкрдХреЛ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдк рдЗрд╕ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЖрдП рдереЗ рдЬреЛ HTML рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ)


рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ className рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


 const Link = props => { /*    (spread ),     ( ) */ return <a {...props} className="link" /> } 

рдмрд╕ рдпрд╣реАрдВ рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред


рдЬрдм рдХреЛрдИ рдХрд┐рд╕реА id рдпрд╛ target рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИ рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ:


 <Link href="sid.studio" id="my-link">Click me</Link> //   : <a href="sid.studio" id="my-link" class="link">Click me</a> 

рд▓реЗрдХрд┐рди рддрдм рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ className рдЧреБрдЬрд░рддрд╛ рд╣реИ?


рд▓рд┐рдВрдХ


 <Link href="sid.studio" className="red-link">Click me</Link> //   : <a href="sid.studio" class="link">Click me</a> 

рдЦреИрд░, рдХреБрдЫ рдирд╣реАрдВ рд╣реБрдЖред рд░рд┐рдРрдХреНрдЯ рдиреЗ рдХрд╕реНрдЯрдо рдХреНрд▓рд╛рд╕ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ред рдЪрд▓реЛ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ:


 const Link = props => { return <a {...props} className="link" /> } 

рдареАрдХ рд╣реИ, рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ ...props рд╕рдВрдХрд▓рди рдХрд░рддрд╛ рд╣реИ, рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЗрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:


 const Link = props => { return ( <a href="sid.studio" className="red-link" className="link" > Click me </a> ) } 

рд╕рдВрдШрд░реНрд╖ рджреЗрдЦреЗрдВ? рджреЛ className ред рд░рд┐рдПрдХреНрдЯ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ?


рдЦреИрд░, рд░рд┐рдПрдХреНрдЯ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ред рдХреЛрд▓рд╛рд╣рд▓ рдХрд░рддрд╛ рд╣реИ!


рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ React.createElement " React.createElement " рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рджреВрд╕рд░рд╛ className рдкрд╣рд▓реЗ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗрдЧрд╛ред


 const Link = props => { return React.createElement( 'a', { className: 'link', href: 'sid.studio' }, 'Click me' ) } 



рдареАрдХ рд╣реИ, рдЕрдм рдЬрдм рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?


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


рддреАрди рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ:


  1. рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЛрдк рд╡реИрд▓реНрдпреВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред
  2. рд╣рдо рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреБрдЫ рдкреНрд░реЙрдкрд░ рдмрджрд▓рдиреЗ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
  3. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред

рдЖрдЗрдП рдПрдХ рдмрд╛рд░ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдХрд░реЗрдВред


1. рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЛрдк рдореВрд▓реНрдп рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП


рдпрд╣ рд╡рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬреЛ рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ - id , title , рдЖрджрд┐ред


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


рдпрд╣рд╛рдБ рдПрдХ рдРрд╕рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ:


рдмреНрд░реЗрдбрдХреНрд░рдВрдм


 const Breadcrumb = () => ( <div className="breadcrumb" data-test-id="breadcrumb"> <Link data-test-id="breadcrumb.link">Home</Link> <Link data-test-id="breadcrumb.link">Parent</Link> <Link data-test-id="breadcrumb.link">Page</Link> </div> ) 

Breadcrumb рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ data-test-id рд╕рд╛рде рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ рджреЛрд╖ рд╣реИред


рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХрд╕реНрдЯрдо рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЙрдкрд░ рд╕реЗ рдЕрдзрд┐рдХ рдкреВрд░реНрд╡рддрд╛ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдкрд╣рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП {...props} ред


 const Link = props => { return ( <a className="link" data-test-id="link" {...props} /> ) } 

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ data-test-id (рдкреНрд░реЙрдкреНрд╕ рд╕реЗ) рдХреА рджреВрд╕рд░реА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд╣рд▓реЗ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдЧреАред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдХреЛрдИ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ data-test-id рдпрд╛ className , рддреЛ рд╡рд╣ рдЙрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдерд╛:


 1. <Link href="sid.studio">Click me</Link> 2. <Link href="sid.studio" data-test-id="breadcrumb.link">Click me</Link> //   : 1. <a class="link" href="sid.studio" data-test-id="link">Click me</a> 2. <a class="link" href="sid.studio" data-test-id="breadcrumb.link">Click me</a> 

рд╣рдо className рд╕рд╛рде рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


рд▓рд╛рд▓-рд▓рд┐рдВрдХ


 <Link href="sid.studio" className="red-link">Click me</Link> //   : <a href="sid.studio" class="red-link" data-test-id="link">Click me</a> 

рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП! рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдЧреЗ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред


2. рд╣рдо рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреБрдЫ рдкреНрд░реЙрдкрд░ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ


рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЙрдкрд╕реНрдерд┐рддрд┐ ( className рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЛ рдмрджрд▓ className , рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдиреНрдп рдкреНрд░реЙрдкреНрд╕, рдЬреИрд╕реЗ id , data-test-id рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред


рд╣рдо рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЖрджреЗрд╢ рджреЗрдХрд░ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 const Link = props => { return ( <a data-test-id="link" {...props} className="link" /> ) } 

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рджрд╛рдИрдВ рдУрд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдмрд╛рдИрдВ рдУрд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, {...props} рд╕реЗ рдкрд╣рд▓реЗ рдХреА рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рдж рдХреА рд╣рд░ рдЪреАрдЬ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдХрд╛рдо рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдирд╛ className рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЬрд╛рдВрдЪ рдкреНрд░реЙрдк рдмрдирд╛рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ:


 Link.PropTypes = { className: function(props) { if (props.className) { return new Error( `  className  Link,      ` ) } } } 

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


рдЕрдм, рдЬрдм рдбреЗрд╡рд▓рдкрд░ className рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реЗрдЧреАред


рд▓рд┐рдВрдХ


 <Link href="sid.studio" className="red-link">Click me</Link> //   : <a href="sid.studio" class="link">Click me</a> 

 :   :   className  Link,       

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореБрдЭреЗ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рдпрд╛ рджреЛ рдмрд╛рд░ рдХрд░рдирд╛ рдерд╛ред рдЖрдорддреМрд░ рдкрд░ рдЖрдк рдЕрдкрдиреЗ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред


рдЬреЛ рд╣рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рддрд╛ рд╣реИред


3. рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП


рдпрд╣ рд╢рд╛рдпрдж рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред


рд▓рд┐рдВрдХ


 <Link href="sid.studio" className="underline">Click me</Link> //   : <a href="sid.studio" class="link underline">Click me</a> 

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 const Link = props => { /*  className   */ const { className, otherProps } = props /*     */ const classes = 'link ' + className return ( <a data-test-id="link" className={classes} {...otherProps} /*     */ /> ) } 

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


рд╕реНрд╡рд┐рдЪ


 <Switch onClick={value => console.log(value)} /> 

рдпрд╣рд╛рдБ рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:


 class Switch extends React.Component { state = { enabled: false } onToggle = event => { /*      */ this.setState({ enabled: !this.state.enabled }) /*       */ if (typeof this.props.onClick === 'function') { this.props.onClick(event, this.state.enabled) } } render() { /*        я╕П */ return <div class="toggler" onClick={this.onToggle} /> } } 

рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдирд╛рдо рдХреА рдЧрдбрд╝рдмрдбрд╝реА рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ; рдореИрдВрдиреЗ рдЗрд╕реЗ рд░рд╛рдЗрдЯрд┐рдВрдЧ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд░рд╛рдЗрдЯрд┐рдВрдЧ рдПрдкреАрдЖрдИ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ , рднрд╛рдЧ 2: рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╛рдо рджреЗрдВ, рдмрд╛рддрдЪреАрдд рдХреЗ рддрд░реАрдХреЗ рдирд╣реАрдВ ред




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


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

Source: https://habr.com/ru/post/hi459380/


All Articles