рд░рд┐рдПрдХреНрдЯ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдШрдЯрдХ рдЧреБрдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

тЖТ
рднрд╛рдЧ 1: рдкрд╛рдареНрдпрдХреНрд░рдо рдЕрд╡рд▓реЛрдХрди, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░рдг, ReactDOM рдФрд░ JSXтЖТ
рднрд╛рдЧ 2: рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХтЖТ
рднрд╛рдЧ 3: рдШрдЯрдХ рдлрд╛рдЗрд▓реЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛тЖТ
рднрд╛рдЧ 4: рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЗ рдШрдЯрдХтЖТ
рднрд╛рдЧ 5: рдПрдХ TODO рдЖрд╡реЗрджрди, рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдкрд░ рдХрд╛рдо рд╢реБрд░реВтЖТ
рднрд╛рдЧ 6: рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЬреЗрдПрд╕рдПрдХреНрд╕ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯтЖТ
рднрд╛рдЧ 7: рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓реАтЖТ
рднрд╛рдЧ 8: TODO рдЖрд╡реЗрджрди рдкрд░ рдХрд╛рдо рдЬрд╛рд░реА рд░рдЦрд╛, рдШрдЯрдХреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рддтЖТ
рднрд╛рдЧ 9: рдШрдЯрдХ рдЧреБрдгтЖТ
рднрд╛рдЧ 10: рдШрдЯрдХ рдЧреБрдгреЛрдВ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛тЖТ
рднрд╛рдЧ 11: рдбрд╛рдпрдиреЗрдорд┐рдХ рдорд╛рд░реНрдХрдЕрдк рдЬреЗрдирд░реЗрд╢рди рдФрд░ рдореИрдк рдПрд░реЗ рд╡рд┐рдзрд┐тЖТ
рднрд╛рдЧ 12: рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛, рдПрдХ TODO рдЖрд╡реЗрджрди рдкрд░ рдХрд╛рдо рдХрд╛ рддреАрд╕рд░рд╛ рдЪрд░рдгтЖТ
рднрд╛рдЧ 13: рд╡рд░реНрдЧ-рдЖрдзрд╛рд░рд┐рдд рдШрдЯрдХтЖТ
рднрд╛рдЧ 14: рд╡рд░реНрдЧ-рдЖрдзрд╛рд░рд┐рдд рдШрдЯрдХреЛрдВ, рдШрдЯрдХ рд╕реНрдерд┐рддрд┐ рдкрд░ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛тЖТ
рднрд╛рдЧ 15: рдШрдЯрдХ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛рдПрдБтЖТ
рднрд╛рдЧ 16: TODO рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдкрд░ рдХрд╛рдо рдХрд╛ рдЪреМрдерд╛ рдЪрд░рдгтЖТ
рднрд╛рдЧ 17: TODO рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░ рдХрд╛рдо рдХрд╛ рдкрд╛рдВрдЪрд╡рд╛ рдЪрд░рдг, рдШрдЯрдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИтЖТ
рднрд╛рдЧ 18: TODO рдЖрд╡реЗрджрди рдкрд░ рдХрд╛рдо рдХрд╛ рдЫрдард╛ рдЪрд░рдгтЖТ
рднрд╛рдЧ 19: рдШрдЯрдХ рдЬреАрд╡рди рдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпрд╛рдБрднрд╛рдЧ 20: рд╕рд╢рд░реНрдд рдкреНрд░рддрд┐рдкрд╛рджрди рдореЗрдВ рдкрд╣рд▓рд╛ рдкрд╛рдатЖТ
рднрд╛рдЧ 21: рд╕рд╢рд░реНрдд рдкреНрд░рддрд┐рдкрд╛рджрди рдкрд░ рджреВрд╕рд░рд╛ рдкрд╛рда рдФрд░ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛тЖТ
рднрд╛рдЧ 22: TODO рдЖрд╡реЗрджрди рдкрд░ рдХрд╛рдо рдХрд╛ рд╕рд╛рддрд╡рд╛рдВ рдЪрд░рдг, рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛тЖТ
рднрд╛рдЧ 23: рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдкрд╣рд▓рд╛ рдкрд╛рдатЖТ
рднрд╛рдЧ 24: рджреВрд╕рд░рд╛ рд░реВрдк рдкрд╛рдатЖТ
рднрд╛рдЧ 25: рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛тЖТ
рднрд╛рдЧ 26: рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛, рдХрдВрдЯреЗрдирд░ / рдШрдЯрдХ рдкреИрдЯрд░реНрдитЖТ
рднрд╛рдЧ 27: рдкрд╛рдареНрдпрдХреНрд░рдо рдкрд░рд┐рдпреЛрдЬрдирд╛рдкрд╛рда 19. рдЕрднрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдШрдЯрдХ рдЧреБрдг
тЖТ
рдореВрд▓Create
create-react-app
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░
src
рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдХрдИ рдорд╛рдирдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдХреЛрдб рдмрджрд▓реЗрдВред
рдпрд╣рд╛рдБ
index.js
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:
import React from "react" import ReactDOM from "react-dom" import "./index.css" import App from "./App" ReactDOM.render(<App />, document.getElementById("root"))
рдпрд╣рд╛рдБ рдЙрди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ
index.css
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
body { margin: 0; } .contacts { display: flex; flex-wrap: wrap; } .contact-card { flex-basis: 250px; margin: 20px; } .contact-card > img { width: 100%; height: auto; } .contact-card > h3 { text-align: center; } .contact-card > p { font-size: 12px; }
рдпрд╣рд╛рдБ
App.js
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рд╣реИ:
import React from "react" function App() { return ( <div className="contacts"> <div className="contact-card"> <img align="center" src="http://placekitten.com/300/200"/> <h3><font color="#3AC1EF">тЦНMr. Whiskerson</font></h3> <p>Phone: (212) 555-1234</p> <p>Email: mr.whiskaz@catnap.meow</p> </div> <div className="contact-card"> <img align="center" src="http://placekitten.com/400/200"/> <h3><font color="#3AC1EF">тЦНFluffykins</font></h3> <p>Phone: (212) 555-2345</p> <p>Email: fluff@me.com</p> </div> <div className="contact-card"> <img align="center" src="http://placekitten.com/400/300"/> <h3><font color="#3AC1EF">тЦНDestroyer</font></h3> <p>Phone: (212) 555-3456</p> <p>Email: ofworlds@yahoo.com</p> </div> <div className="contact-card"> <img align="center" src="http://placekitten.com/200/100"/> <h3><font color="#3AC1EF">тЦНFelix</font></h3> <p>Phone: (212) 555-4567</p> <p>Email: thecat@hotmail.com</p> </div> </div> ) } export default App
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдРрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЗрдЬрдХреЛрдб рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рдирд╡рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЕрдм рдпреЗ рддрддреНрд╡
App
рдШрдЯрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирддреЗ рд╣реИрдВред рдкрд┐рдЫрд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╣рдордиреЗ рдЬреЛ рдмрд╛рдд рдХреА рдереА, рдЙрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЖрдк рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдПрдХ рдРрд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдШрдЯрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ, рдЬрд┐рд╕реЗ рдЧреБрдг рдпрд╛ рдЧреБрдгреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдмрд┐рд▓реНрд▓рд┐рдпреЛрдВ, рдЙрдирдХреЗ рдирд╛рдо рдФрд░ рдЙрдирдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреА рд╕рдВрдкрд░реНрдХ рдЬрд╛рдирдХрд╛рд░реА (рдпрд╛ рд╢рд╛рдпрдж рдЦреБрдж) - рдПрдХ рдлреЛрди рдФрд░ рдПрдХ рдИрдореЗрд▓ рдкрддреЗ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдб рд╣реИрдВред рдПрдХ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдмрд╛рдж рдореЗрдВ рдРрд╕реЗ рд╕рднреА рдХрд╛рд░реНрдбреЛрдВ рдХрд╛ рдЖрдзрд╛рд░ рдмрди рдЬрд╛рдПрдЧрд╛, рдЖрдк
App
рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдорд╛рд░реНрдХрдЕрдк рдЕрдВрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рдпрд╣:
<div className="contact-card"> <img align="center" src="http://placekitten.com/300/200"/> <h3><font color="#3AC1EF">тЦНMr. Whiskerson</font></h3> <p>Phone: (212) 555-1234</p> <p>Email: mr.whiskaz@catnap.meow</p> </div>
рдРрдк рдЪрд╛рд░ рдРрд╕реЗ рдмреНрд▓реЙрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдШрдЯрдХ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕рднреА рдХрд╛рд░реНрдбреЛрдВ рдХрд╛ рдЖрдзрд╛рд░ рдмрди рдЬрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
src
рдлрд╝реЛрд▓реНрдбрд░ -
ContactCard.js
рдореЗрдВ рдПрдХ рдирдпрд╛ рдШрдЯрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рдХреЛрдб рдбрд╛рд▓реЗрдВ рдЬреЛ
App
рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдкрд╣рд▓реЗ
<div>
рддрддреНрд╡ рдХреЛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХреЛрдб рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ
ContactCard
рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:
import React from "react" function ContactCard() { return ( <div className="contact-card"> <img align="center" src="http://placekitten.com/300/200"/> <h3><font color="#3AC1EF">тЦНMr. Whiskerson</font></h3> <p>Phone: (212) 555-1234</p> <p>Email: mr.whiskaz@catnap.meow</p> </div> ) } export default ContactCard
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЗрд╕ рдШрдЯрдХ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрди рд╕рднреА рдореЗрдВ рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдШрдЯрдХ рдХреЛрдб рдореЗрдВ рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдд рд╣реИред рдФрд░ рд╣рдо рдЗрд╕ рдШрдЯрдХ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдШрдЯрдХ рдХреЛ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд╣ рддрдм рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рдЬреЗрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рддрд░реНрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ
ContactCard
рдШрдЯрдХ
ContactCard
рдПрдХ
ContactCard
, рдЬрд┐рд╕ рд░реВрдк рдореЗрдВ рдпрд╣ рдЕрдм рдореМрдЬреВрдж рд╣реИ, рд╡рд╣ рдПрдХ рдРрд╕рд╛ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛, рдмрд╕ рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ:
function addNumbers() { return 1 + 1 }
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдЦреНрдпрд╛ 1 рдФрд░ 1 рдХреЗ рдпреЛрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1 рдФрд░ 2 рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛ рдХрд┐рд╕реА рднреА рдЗрдирдкреБрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЖрдкрдХреЛ рднрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрд╕реБрд╡рд┐рдзрд╛ рд╣реЛрдЧреА рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХрд╛рд░реНрдп рдмрдирд╛рдирд╛ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╣реЛрдЧреА рдЬреЛ рджреЛ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреА рд░рд╛рд╢рд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
function addNumbers(a, b) { return a + b }
рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЯрд░реНрди рдХреНрдпрд╛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдХрдм рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рдХрд░ рд╣рдо рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рд╣рдо
ContactCard
рдШрдЯрдХ
ContactCard
рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдм рддрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдкреГрд╖реНрда рдкрд░ рдХрд╛рд░реНрдб рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдП рдмрд┐рдирд╛, рдЗрд╕рдХреЗ рдЪрд╛рд░ рдЙрджрд╛рд╣рд░рдг рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ:
import React from "react" import ContactCard from "./ContactCard" function App() { return ( <div className="contacts"> <ContactCard /> <ContactCard /> <ContactCard /> <ContactCard /> <div className="contact-card"> <img align="center" src="http://placekitten.com/300/200"/> <h3><font color="#3AC1EF">тЦНMr. Whiskerson</font></h3> <p>Phone: (212) 555-1234</p> <p>Email: mr.whiskaz@catnap.meow</p> </div> <div className="contact-card"> <img align="center" src="http://placekitten.com/400/200"/> <h3><font color="#3AC1EF">тЦНFluffykins</font></h3> <p>Phone: (212) 555-2345</p> <p>Email: fluff@me.com</p> </div> <div className="contact-card"> <img align="center" src="http://placekitten.com/400/300"/> <h3><font color="#3AC1EF">тЦНDestroyer</font></h3> <p>Phone: (212) 555-3456</p> <p>Email: ofworlds@yahoo.com</p> </div> <div className="contact-card"> <img align="center" src="http://placekitten.com/200/100"/> <h3><font color="#3AC1EF">тЦНFelix</font></h3> <p>Phone: (212) 555-4567</p> <p>Email: thecat@hotmail.com</p> </div> </div> ) } export default App
рдЕрдм рдЪрд▓рд┐рдП рдЙрд╕ рдХреЛрдб рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ
ContactCard
рдШрдЯрдХ рдХреЛ рддреБрд░рдВрдд рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдирд┐рдпрдорд┐рдд HTML рддрддреНрд╡ рдмрдирд╛рдХрд░, рд╣рдо рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдирд╛рдо рдорд╛рдирдХ рджреНрд╡рд╛рд░рд╛ рд╣рд╛рд░реНрдб-рдХреЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред рдШрдЯрдХреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рд╕рдЯреАрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ, рдФрд░ рдЦреБрдж рдХреЗ рд▓рд┐рдП рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдШрдЯрдХ рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдб рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЪрд╛рд░ рдЯреБрдХрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд╛рд░реНрдб рд╕реЗ рдХрд╛рд░реНрдб рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдмрд┐рд▓реНрд▓реА рдФрд░ рдЙрд╕рдХреЗ рдирд╛рдо рдХреА рдПрдХ рдЫрд╡рд┐ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдлреЛрди рдФрд░ рдИрдореЗрд▓ рдкрддрд╛ рднреА рд╣реИред рдмрд┐рд▓реНрд▓реА рдХрд╛ рдирд╛рдо
name
рд╕рдВрдкрддреНрддрд┐, рдЫрд╡рд┐ рдкрддрд╛
imgURL
рд╕рдВрдкрддреНрддрд┐,
phone
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ
phone
рдФрд░
email
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдИрдореЗрд▓ рдкрддреЗ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реЛрдиреЗ рджреЗрдВред
рд╣рдо рдЗрди рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ
ContactCard
рдШрдЯрдХреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЙрд╕ рдХреЛрдб рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
App
, рд╣рдо рдЗрд╕рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯреБрдХрдбрд╝реЗ рд╣рдЯрд╛ рджреЗрдВрдЧреЗред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк,
App
рдШрдЯрдХ рдХрд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
import React from "react" import ContactCard from "./ContactCard" function App() { return ( <div className="contacts"> <ContactCard name="Mr. Whiskerson" imgUrl="http://placekitten.com/300/200" phone="(212) 555-1234" email="mr.whiskaz@catnap.meow" /> <ContactCard name="Fluffykins" imgUrl="http://placekitten.com/400/200" phone="(212) 555-2345" email="fluff@me.com" /> <ContactCard name="Destroyer" imgUrl="http://placekitten.com/400/300" phone="(212) 555-3456" email="ofworlds@yahoo.com" /> <ContactCard name="Felix" imgUrl="http://placekitten.com/200/100" phone="(212) 555-4567" email="thecat@hotmail.com" /> </div> ) } export default App
рд╕рдЪ рд╣реИ, рдПрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЧреБрдгреЛрдВ рдХрд╛ рдорд╛рддреНрд░ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдЙрдирдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдкреГрд╖реНрда, рдЬреЛ рдЙрдкрд░реЛрдХреНрдд
App
рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдореЗрдВ рдЪрд╛рд░ рд╕рдорд╛рди рдХрд╛рд░реНрдб рд╣реЛрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдбреЗрдЯрд╛
ContactCard
рдШрдЯрдХ рдХреЗ рдХреЛрдб рдореЗрдВ рд╕реЗрдЯ рд╣реИ, рдЬреЛ рдЕрднреА рддрдХ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред
рдХреЛрдб рдореЗрдВ рдХрд╛рд░реНрдб рдбреЗрдЯрд╛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдШрдЯрдХ рдЗрд╕рдХреЗ рдкрд╛рд╕ рджрд┐рдП рдЧрдП рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИрддреЛ рдЕрдм рдпрд╣ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдХрд┐
ContactCard
рдШрдЯрдХ рдЙрди рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рддреБрд░рдВрдд рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╣рдо рд╕рдВрдкрд░реНрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рдЬрдм рдпрд╣
props
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдШрдЯрдХ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
import React from "react" function ContactCard(props) { return ( <div className="contact-card"> <img align="center" src="http://placekitten.com/300/200"/> <h3><font color="#3AC1EF">тЦНMr. Whiskerson</font></h3> <p>Phone: (212) 555-1234</p> <p>Email: mr.whiskaz@catnap.meow</p> </div> ) } export default ContactCard
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЖрдк рдХреА рддрд░рд╣ рдХреБрдЫ рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрд╕реЗ
props
рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рдФрд░ рдЬрд┐рди рдЧреБрдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдпрд╣рд╛рдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрдХреНрд╕рд░ "рдкреНрд░реЙрдкреНрд╕" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
props
рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдг рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдЧреБрдг рд╣реИрдВ рдЬрдм рдЗрд╕реЗ рддреНрд╡рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ
props.name
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА
props.name
рдХреЗ рдмрд╛рдж рдЬрдм рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдмрд┐рд▓реНрд▓реА рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рддреЛ рдЙрд╕рдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ
props.imgUrl
,
props.phone
,
props.email
ред рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
ContactCard
рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ
console.log(props)
рдХрдорд╛рдВрдб
ContactCard
ред
import React from "react" function ContactCard(props) { console.log(props) return ( <div className="contact-card"> <img align="center" src="http://placekitten.com/300/200"/> <h3><font color="#3AC1EF">тЦНMr. Whiskerson</font></h3> <p>Phone: (212) 555-1234</p> <p>Email: mr.whiskaz@catnap.meow</p> </div> ) } export default ContactCard
рдпрд╣ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд
props
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓рд╛рдПрдЧрд╛ред
рдХрдВрд╕реЛрд▓ рдкреНрд░реЙрдкреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯрдпрд╣рд╛рдВ рдЖрдк
ContactCard.js
рд╕реЗ рдЪрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо
ContactCard
рдШрдЯрдХ рдХреЗ рдЪрд╛рд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм рд╣рдореЗрдВ рдШрдЯрдХ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐
props
рдСрдмреНрдЬреЗрдХреНрдЯ
props
рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕
props.imgUrl
рд╕реЗ
props.imgUrl
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
<img align="center" src=props.imgUrl/>
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рд╣рдореЗрдВ JSX рдХреЛрдб рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдПрдХ рдЗрдХрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдХрд┐ рдкрд┐рдЫрд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд╕реНрддреБ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
<img align="center" src={props.imgUrl}/>
рд╣рдо рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕рдХрд╛ рдХреЛрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрдЧрд╛:
import React from "react" function ContactCard(props) { return ( <div className="contact-card"> <img align="center" src={props.imgUrl}/> <h3><font color="#3AC1EF">тЦН{props.name}</font></h3> <p>Phone: {props.phone}</p> <p>Email: {props.email}</p> </div> ) } export default ContactCard
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдлрд╝реЛрди рдФрд░ рдИрдореЗрд▓ рдкрддреЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдЙрди рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ
Phone:
рдФрд░
Email:
рдЙрдирдХреЗ рдмрд╛рдж рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдкрд╛рда рд╕рднреА рдШрдЯрдХреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЗрдЬ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдЪрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдб рд╣реИрдВред
рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреГрд╖реНрда рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЧрдпрд╛рд╣рдорд╛рд░рд╛ рдШрдЯрдХ рдХреЗрд╡рд▓ рдЪрд╛рд░ рдЧреБрдгреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдПрдХ рдШрдЯрдХ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 50 рдЧреБрдг? рд╢рд╛рдпрдж рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛, рдЬреИрд╕рд╛ рдХрд┐
App
рдШрдЯрдХ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдШрдЯрдХреЛрдВ рдХреЛ рдЧреБрдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдШрдЯрдХ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдЙрд╕реЗ рдЧреБрдгреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдШрдЯрдХ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреИрд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ:
import React from "react" import ContactCard from "./ContactCard" function App() { return ( <div className="contacts"> <ContactCard contact={{ name: "Mr. Whiskerson", imgUrl: "http://placekitten.com/300/200", phone: "(212) 555-1234", email: "mr.whiskaz@catnap.meow" }} /> <ContactCard name="Fluffykins" imgUrl="http://placekitten.com/400/200" phone="(212) 555-2345" email="fluff@me.com" /> <ContactCard name="Destroyer" imgUrl="http://placekitten.com/400/300" phone="(212) 555-3456" email="ofworlds@yahoo.com" /> <ContactCard name="Felix" imgUrl="http://placekitten.com/200/100" phone="(212) 555-4567" email="thecat@hotmail.com" /> </div> ) } export default App
рдпрд╣ рдХрд╣рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рдШрдЯрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдШрдЯрдХ рдХреЛ рдкрд╛рд░рд┐рдд рдЧреБрдг рдЕрднреА рднреА рдХреЛрдб рдореЗрдВ рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдд рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдШрдЯрдХ рдХреЛ рдШрдЯрдХ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдлрд╛рдпрджреЗ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдорд╣рд╕реВрд╕ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреБрдЫ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, JSON рдлрд╝рд╛рдЗрд▓ рд╕реЗред
рд╕рдВрдкрд░реНрдХ рдШрдЯрдХ рдХреЗ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ
App
рдШрдЯрдХ рдХреЗ рдХреЛрдб рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рджреМрд░рд╛рди,
App
рдХрд╛ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдЯреВрдЯ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рддрд░рд╣ рдЕрдм рдЙрд╕рдХрд╛ рдкреЗрдЬ рджрд┐рдЦреЗрдЧрд╛ред
рдЖрд╡реЗрджрди рдХреА рдЦрд░рд╛рдмреАрдпрд╣ рдХреИрд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдХрд┐
console.log(props)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдкреНрд░реЙрдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рдШрдЯрдХ рдХреА
props
рд╡рд╕реНрддреБ рджреВрд╕рд░реЗ рдФрд░ рдЕрдЧрд▓реЗ рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╣реА рд╡рд╕реНрддреБ рд╕реЗ рдЕрд▓рдЧ рд╣реИред
ContactCard
рдШрдЯрдХ рдореЗрдВ
ContactCard
рд╣рдо рдЗрд╕ рдЕрдиреБрдорд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░
imgUrl
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ
name
,
imgUrl
рдФрд░ рдЕрдиреНрдп рдЧреБрдг рд╣реИрдВред рдпрд╣рд╛рдВ, рдкрд╣рд▓рд╛ рдШрдЯрдХ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ -
contact
ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐
props
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЧреБрдг рд╣реИ -
contact
, рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдФрд░ рдШрдЯрдХ рдХреЛрдб рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЛ рдПрдХ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдЧреБрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреНрдп рдЧреБрдгреЛрдВ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
name
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдШрдЯрдХ рдХреЛрдб рдореЗрдВ рдкреНрд░рдкрддреНрд░
props.contact.name
рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЗрд╕реА рддрд░рд╣ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рд╣рдореЗрдВ рдЙрди рдЕрдиреНрдп рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИред
рдЖрдЗрдП рдШрдЯрдХ рдХреЛрдб рдХреЛ рд░реАрд╕рд╛рдпрдХрд▓ рдХрд░реЗрдВ, рдПрдХ рд╕рдВрдкрддреНрддрд┐-рд╡рд╕реНрддреБ
contact
рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреНрдп рдЧреБрдг рд╣реИрдВ:
import React from "react" function ContactCard(props) { console.log(props) return ( <div className="contact-card"> <img align="center" src={props.contact.imgUrl}/> <h3><font color="#3AC1EF">тЦН{props.contact.name}</font></h3> <p>Phone: {props.contact.phone}</p> <p>Email: {props.contact.email}</p> </div> ) } export default ContactCard
рдкрд╣рд▓реЗ рдШрдЯрдХ рдХреЛ рдЕрдм рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╣рдореЗрдВ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрд╣реБрдд рд╕рд╛рд░реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдЕрд╡рдЧрдд
ContactCard
рдХрд┐
App
рдШрдЯрдХ рдореЗрдВ рдмрдирд╛рдП рдЧрдП
ContactCard
рдШрдЯрдХ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
contact
рд╡рд╕реНрддреБред рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рд╕рдВрдкрддреНрддрд┐
undefined
рд╣реЛрдЧреАред рдирддреАрдЬрддрди,
undefined
рдореВрд▓реНрдп рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред рд╣рдо рд╕рдВрдкрд░реНрдХ рдШрдЯрдХ рдХреЗ рдЧрдарди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░
App
рдШрдЯрдХ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВрдЧреЗ:
import React from "react" import ContactCard from "./ContactCard" function App() { return ( <div className="contacts"> <ContactCard contact={{ name: "Mr. Whiskerson", imgUrl: "http://placekitten.com/300/200", phone: "(212) 555-1234", email: "mr.whiskaz@catnap.meow" }} /> <ContactCard contact={{ name: "Fluffykins", imgUrl: "http://placekitten.com/400/200", phone: "(212) 555-2345", email: "fluff@me.com" }} /> <ContactCard contact={{ name: "Destroyer", imgUrl: "http://placekitten.com/400/300", phone: "(212) 555-3456", email: "ofworlds@yahoo.com" }} /> <ContactCard contact={{ name: "Felix", imgUrl: "http://placekitten.com/200/100", phone: "(212) 555-4567", email: "thecat@hotmail.com" }} /> </div> ) } export default App
рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЗрдЬ рдкрд╣рд▓реЗ рдЬреИрд╕рд╛ рд╣реА рджрд┐рдЦреЗрдЧрд╛ред
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдЙрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдЖрдЬ рд╕реАрдЦрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭ рд╕рдХреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдШрдЯрдХ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдирдП рдЧреБрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдШрдЯрдХ рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо
рдЖрдЬ рд╣рдордиреЗ рдЙрди рдЧреБрдгреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬреЛ рдЙрдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпреЗ рдЧреБрдг HTML рддрддреНрд╡реЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдорд┐рд▓рддреЗ рдЬреБрд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдШрдЯрдХреЛрдВ рдореЗрдВ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ рдФрд░ рдШрдЯрдХ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рдЕрдЧрд▓реА рдмрд╛рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдШрдЯрдХ рдЧреБрдгреЛрдВ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдмрдХ рд╣реЛрдЧрд╛ред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдиреЗ рдЖрдЬ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛?