рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд░рд┐рдПрдХреНрд╢рди рдХрдВрдкреЛрдиреЗрдВрдЯ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд░рдЪрдирд╛ рдФрд░ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде, рд╕рдорд╕реНрдпрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ:
- рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВ, рдЬреЛ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛, рд╢рдмреНрджрд╛рд░реНрде рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ
рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рд╡реЗ рдЗрд╕реЗ рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕реНрддрд░ рдкрд░ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ:
рдпрджрд┐ рдЖрдк рдХреБрдЫ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдХрдИ рд╕реНрддрд░реЛрдВ рд╕реЗ рдиреАрдЪреЗ рд▓рд╛рдиреЗ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рдШрдЯрдХ рд░рдЪрдирд╛ рд╕рдВрджрд░реНрдн рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд▓реЗрдЦрди рдкреНрд░рд╕рдВрдЧред
рдпрджрд┐ рд╣рдо рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рдФрд░ рддрд░реНрдХ рджреЗрдЦреЗрдВрдЧреЗ:
рдлреЗрд╕рдмреБрдХ рдкрд░, рд╣рдо рд╣рдЬрд╛рд░реЛрдВ рдШрдЯрдХреЛрдВ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдРрд╕реЗ рдХреЛрдИ рдорд╛рдорд▓реЗ рдирд╣реАрдВ рдорд┐рд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рдШрдЯрдХ рд╡рд┐рд░рд╛рд╕рдд рдкрджрд╛рдиреБрдХреНрд░рдо рдмрдирд╛рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд▓реЗрдЦрди рд░рдЪрдирд╛ рдмрдирд╛рдо рд╡рд┐рд░рд╛рд╕рддред
рдмреЗрд╢рдХ, рдЕрдЧрд░ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣рд░ рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рдХрд╛рд╢рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдореМрдЬреВрджрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред
рдкреИрдЯрд░реНрди # 1 - рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдШрдЯрдХ

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреА рдХреНрдпреЛрдВрдХрд┐ рд╡реЗрд╡ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреЛ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИ ред рд╣рдо рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рдлреЙрд░реНрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмреИрдХрд┐рдВрдЧ рдпрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реЗ рдЖрддреА рд╣реИред рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореВрд╡реА рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП:
const MovieCard = (props) => { const {title, genre, description, rating, image} = props.data; return ( <div> <img href={image} /> <div><h2>{title}</h2></div> <div><p>{genre}</p></div> <div><p>{description}</p></div> <div><h1>{rating}</h1></div> </div> ) }
рдмрдВрдж рдХрд░реЛред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдШрдЯрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдВрддрд╣реАрди рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЕрдЪрд╛рдирдХ рд╢реАрд░реНрд╖рдХ рдлрд┐рд▓реНрдо рд╕рдореАрдХреНрд╖рд╛ рдХреА рдПрдХ рдХрдбрд╝реА рд╣реЛрдЧрд╛? рдФрд░ рд╢реИрд▓реА - рдЗрд╕рдореЗрдВ рд╕реЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдлрд┐рд▓реНрдореЛрдВ рдХреЗ рд▓рд┐рдП? рдЕрдм рди рдЬреЛрдбрд╝реЗрдВ:
const MovieCard = (props) => { const {title: {title}, description: {description}, rating: {rating}, genre: {genre}, image: {imageHref} } = props.data; return ( <div> <img href={imageHref} /> <div><h2>{name}</h2></div> <div><p>{genre}</p></div> <div><h1>{rating}</h1></div> <div><p>{description}</p></div> </div> ) }
рдЗрд╕рд▓рд┐рдП рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдмрдЪрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдПрдХ рд╢реВрдиреНрдп рдмрд┐рдВрджреБ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓реЗрдВрдЧреЗред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдо рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд╕реАрдзреЗ рдкреАрдЫреЗ рд╕реЗ рдлреЗрдВрдХ рд╕рдХрддреЗ рдереЗ:
<MovieCard data={res.data} />
рдЕрдм рд╣рд░ рдмрд╛рд░ рдЖрдкрдХреЛ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<MovieCard data={{ title: {res.title}, description: {res.description}, rating: {res.rating}, image: {res.imageHref} }} />
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рд╢реИрд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдП - рдФрд░ рдШрдЯрдХ рдЧрд┐рд░ рдЧрдпрд╛ред рдФрд░ рдпрджрд┐ рддреНрд░реБрдЯрд┐ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рдереА, рддреЛ рдкреВрд░рд╛ рдЖрд╡реЗрджрди рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реИред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рд╣рдо рдХрд╛рд░реНрдб рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЛ рджрд░реНрд╢рд╛рдХрд░ рдпреЛрдЬрдирд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдм рдХреБрдЫ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдпрд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
interface IMovieCardElement { text?: string; } interface IMovieCardImage { imageHref?: string; } interface IMovieCardProps { title: IMovieCardElement; description: IMovieCardElement; rating: IMovieCardElement; genre: IMovieCardElement; image: IMovieCardImage; } ... const {title: {text: title}, description: {text: description}, rating: {text: rating}, genre: {text: genre}, image: {imageHref} } = props.data;
рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрднреА рднреА "рдХрд┐рд╕реА рднреА рд░реВрдк рдореЗрдВ" рдпрд╛ "IMovieCardProps рдХреЗ рд░реВрдк рдореЗрдВ" рд░реЛрд▓ рдХрд░реЗрдВрдЧреЗред рдХреНрдпрд╛ рдирд┐рдХрд▓рд╛? рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рддреАрди рдмрд╛рд░ (рдпрджрд┐ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ? рдПрдХ рдШрдЯрдХ рдЬреЛ рдЕрднреА рднреА рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдШрдЯрдХ рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рд░реЗрдЯрд┐рдВрдЧ рдХреА рдЕрдм рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рдЬрд╣рд╛рдВ рднреА рд░реЗрдЯрд┐рдВрдЧ рдХреА рдЬрд░реВрд░рдд рд╣реЛ, рдмрд┐рдирд╛ рдкреНрд░реЙрдк рдХреЗ рдкреНрд░реЙрдк рд▓рдЧрд╛рдПрдВ
const MovieCard = ({withoutRating, ...props}) => { const {title: {title}, description: {description}, rating: {rating}, genre: {genre}, image: {imageHref} } = props.data; return ( <div> <img href={imageHref} /> <div><h2>{name}</h2></div> <div><p>{genre}</p></div> { withoutRating && <div><h1>{rating}</h1></div> } <div><p>{description}</p></div> </div> ) }
рддреЗрдЬреА рд╕реЗ, рд▓реЗрдХрд┐рди рд╣рдо рдвреЗрд░ рдХреЛ рдвреЗрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЪреМрдерд╛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред
IMovieCardProps рдореЗрдВ рд░реЗрдЯрд┐рдВрдЧ рдХрд░рдирд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдмрдирд╛рдирд╛ рди рднреВрд▓реЗрдВ
const MovieCard = ({data, ...props}) => { const {title: {text: title}, description: {text: description}, rating: {text: rating} = {}, genre: {text: genre}, image: {imageHref} } = data; return ( <div> <img href={imageHref} /> <div><h2>{name}</h2></div> <div><p>{genre}</p></div> { data.rating && <div><h1>{rating}</h1></div> } <div><p>{description}</p></div> </div> ) }
рдореБрд╢реНрдХрд┐рд▓, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░, рдЪреМрдереА рдмрд╛рд░ рджреЛрд╣рд░рд╛рдПрдВред рдШрдЯрдХ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдореЗрдВ рдХреБрдЦреНрдпрд╛рдд рд░реЗрдЯрд┐рдВрдЧ рдХреЛ рдПрдХ рдХрдбрд╝реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рд░ рдЬрдЧрд╣ рдирд╣реАрдВ:
rating: {text: rating, url: ratingUrl} = {}, ... { data.rating && data.rating.url ? <div>><h1><a href={ratingUrl}{rating}</a></h1></div> : <div><h1>{rating}</h1></div> }
рдФрд░ рдпрд╣рд╛рдВ рд╣рдо рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкрд╛рд░рджрд░реНрд╢реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдкреИрдЯрд░реНрди рдирдВрдмрд░ 2 - рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░рд╛рдЬреНрдп рдФрд░ reducers рдХреЗ рд╕рд╛рде рдШрдЯрдХ

рдЙрд╕реА рд╕рдордп, рдПрдХ рдЕрдЬреАрдм рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рджреГрд╖реНрдЯрд┐рдХреЛрдгред рдЬрдм рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рддреЛ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдФрд░ Vue рдореЗрдВ JSX рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рдХрдореА рдереАред рдорд┐рдЯрдкреНрд╕ рдкрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдПрдХ рдмрд╛рд░ рдореИрдВрдиреЗ рд╕реБрдирд╛ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рдПрдХ рдШрдЯрдХ рдХрдИ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдЖрдЙрдЯ рд╕рдорд╛рди рд░рд╣рддрд╛ рд╣реИ
- рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдбреЗрдЯрд╛ рдХреЛ рдХрдВрдкреЛрдиреЗрдВрдЯ рд╕реНрдЯреЗрдЯ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░ рдХреЗ рд╕рд╛рде рд░рд┐рдбреНрдпреВрд╕рд░ рд╢реБрд░реВ рди рд╣реЛ (рд╡реИрдХрд▓реНрдкрд┐рдХ)
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЕрдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ (1) рдХреА рд╕рдорд╕реНрдпрд╛ рддрд░реНрдХ рдЕрдзрд┐рднрд╛рд░ (2) рдХреА рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЕрдВрддрд┐рдо рдШрдЯрдХ (3) рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рджреНрд╡рд╛рд░рд╛ рдкреВрд░рдХ рд╣реИред
рдЕрдВрддрд┐рдо (3) рд╡рд╕реНрддреБ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓реЙрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВред рдпрджрд┐ рдШрдЯрдирд╛ рдЙрдиреНрдирдд рдпрд╛ JSON.stringify рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рдмрд╕ рд╢реБрд░реБрдЖрдд рд╣реИред рдЖрдк рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдЦреЛ рдЧрдпрд╛ рд╣реИ рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрдЪрд╛рдиреЗ рдпрд╛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧрдгрдирд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рдЕрдиреБрдХреВрд▓рди рдПрдХ рд░рд┐рдбреНрдпреВрд╕рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ):
<MovieCard data={{ type: 'withoutRating', data: res.data, }} />
рдЕрдм рдШрдЯрдХ рд▓рд┐рдЦреЗрдВ:
const MovieCard = ({data}) => { const card = reduceData(data.type, data.data); return ( <div> <img href={card.imageHref} /> <div><h2>{card.name}</h2></div> <div><p>{card.genre}</p></div> { card.withoutRating && <div><h1>{card.rating}</h1></div> } <div><p>{card.description}</p></div> </div> ) }
рдФрд░ рддрд░реНрдХ:
const reduceData = (type, data) = { switch (type) { case 'withoutRating': return { title: {data.title}, description: {data.description}, rating: {data.rating}, genre: {data.genre}, image: {data.imageHref} withoutRating: true, }; ... } };
рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ:
- рддрд░реНрдХ рдХреА рдПрдХ рдкрд░рдд рдЬреЛрдбрд╝рдХрд░, рд╣рдо рдЕрдВрддрддрдГ рдбреЗрдЯрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмреАрдЪ рд╕реАрдзрд╛ рд╕рдВрдмрдВрдз рдЦреЛ рджреЗрддреЗ рд╣реИрдВ
- рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рд╕рднреА рдХрд╛рд░реНрдбреЛрдВ рдХреЛ рдПрдХ рдЖрдпреБ рд░реЗрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдбреНрдпреВрд╕рд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
- рдЪрд░рдг # 1 рд╕реЗ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рджреВрд░
рдкреИрдЯрд░реНрди # 3 - рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди рдХреЛ рдкреНрд░рджрд░реНрд╢рди рд▓реЙрдЬрд┐рдХ рдФрд░ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛

рдпрд╣рд╛рдВ рд╣рдо рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдмрд╕ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рддрд░реНрдХ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрднрд╡рддрдГ рд░рд┐рдПрдХреНрдЯ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрдо рддрд░реАрдХрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЧрд╛рдЗрдб рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИред
рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рд░рд┐рдПрдХреНрдЯ рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрдЯрд┐рдВрдЧ рдореЗрдВред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдорд╛рд░реНрдЧ рдХреЗ рдШрдЯрдХ рд╕реЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рддреНрд░ рдХреЛ рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХ рдЕрд░реНрде рд╣реЛрдЧрд╛ред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЕрдореВрд░реНрддрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд▓рд╕ рд╣реИ: рд╣рдо рдЖрд╡реЗрджрди рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рддрд░реНрдХ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдзреЛрдЦрд╛ рд╣реИред рдПрдХ рдУрд░, рдпрд╣ рдПрдкреАрдЖрдИ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рджреВрд╕рд░реЗ рдкрд░, рдЖрд╡реЗрджрди рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП, рдФрд░ рддрд░реНрдХ рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред
рд╕рдорд╛рдзрд╛рди: рдкреИрдЯрд░реНрди рдирдВрдмрд░ 4 - рд░рдЪрдирд╛

рдпрджрд┐ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд░рдЪрдирд╛ рдкрджреНрдзрддрд┐ рд╕реНрдкрд╖реНрдЯ рд╣реИ ( рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдореЗрдВ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЕрд▓рд╛рд╡рд╛):
- рд╕реАрдорд╛рдВрдд рд╡рд┐рдХрд╛рд╕ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╡рд┐рдХрд╛рд╕ - рд▓реЗрдЖрдЙрдЯ рдХреЗ рд▓рд┐рдП HTML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рдПрдХ рдбреЛрдореЗрди рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░реЗрдВред рд░рд┐рдПрдХреНрдЯ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, JSX рдФрд░ React рдШрдЯрдХ, рдЬреЛ рдХрд┐ JSX рддрддреНрд╡ рднреА рд╣реИрдВ, рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реНрддрд░ рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рдЪрд░рдг рдореЗрдВ, рдХрдИ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдШрдЯрдХреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдореБрдЦ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
function SplitPane(props) { return ( <div className="SplitPane"> <div className="SplitPane-left"> {props.left} </div> <div className="SplitPane-right"> {props.right} </div> </div> ); } function App() { return ( <SplitPane left={ <Contacts /> } right={ <Chat /> } /> ); }
рдпрд╣реА рд╣реИ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп, рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдмреВрд▓рд┐рдпрди рдкреНрд░рдХрд╛рд░, рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд, рдирд┐рд░реНрдорд┐рдд рдШрдЯрдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдХрд╛рд╢, рдпрд╣ рддрд░реАрдХрд╛ рднреА рдЕрдирдореНрдп рд╣реЛ рдЬрд╛рддрд╛ред рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рд╣реИ:
- рджреЛрдиреЛрдВ рдкреНрд░реЙрдкреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдШрдЯрдХ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ
- рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ рд╕реНрдкреНрд▓рд┐рдЯрдкреИрди рдШрдЯрдХ рдХреЛ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реЛрдб рдХрд░рдирд╛ред
- рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдФрд░ рдмрд╣реБрд▓рддрд╛ рдХреЛ рдмрд╣реБрдд рд╢рдмреНрджрд╛рд░реНрде рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрд╣ рдореИрдкрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреНрд░реЙрдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдирддреАрдЬрддрди, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд╛рдлреА рд╕рд░рд▓ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рднреА:
function SplitPane(props) { return ( <div className="SplitPane"> { props.left && <div className="SplitPane-left"> {props.left} </div> } { props.right && <div className="SplitPane-right"> {props.right} </div> } </div> ); } function App() { return ( <SplitPane left={ contacts.map(el => <Contacts name={ <ContactsName name={el.name} /> } phone={ <ContactsPhone name={el.phone} /> } /> ) } right={ <Chat /> } /> ); }
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ, рдПрдХ рд╕рдорд╛рди рдХреЛрдб, рдЙрдЪреНрдЪ рдЖрджреЗрд╢ рдШрдЯрдХреЛрдВ (HOC) рдФрд░ рд░реЗрдВрдбрд░ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, " рд░реИрдкрд░ рдирд░рдХ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдПрдХ рдирдП рддрддреНрд╡ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝ рдХреЗ рд╕рд╛рде, рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдЙрддреНрддрд░ рд╣реИ - рд╕реНрд▓реЙрдЯреНрд╕ - рд╡реЗрдм рдШрдЯрдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдФрд░ Vue рдврд╛рдВрдЪреЗ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ ред рджреЛрдиреЛрдВ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реНрд▓реЙрдЯреНрд╕ рдХреЛ рдПрдХ рдкреНрд░рддреАрдХ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд░рд┐рдлрд┐рд▓рд┐рдВрдЧ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рд╕реНрд▓реЙрдЯреНрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╕реАрдорд┐рдд рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреНрдп рд╕реНрд▓реЙрдЯ рдХреЛ рдмрд╛рд▓ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣, рдЪрд▓реЛ рдЗрд╕реЗ рдкреИрдЯрд░реНрди рдирдВрдмрд░ 5 рдХрд╣рддреЗ рд╣реИрдВ - рд╕реНрд▓реЙрдЯ :
function App() { return ( <SplitPane> <LeftPane> <Contacts /> </LeftPane> <RightPane> <Chat /> </RightPane> </SplitPane> ); }
рдореИрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрд▓реЙрдЯ рдкреИрдЯрд░реНрди рдХреЗ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред