React: "Props.children" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рдордИ 2018  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдмрд╕ рд╕рд╡рд╛рд▓

Props.children рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкреНрд░рд╢реНрди

React.Children рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЖрдк рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ this.props.children рдПрдХ "рдЕрдкрд╛рд░рджрд░реНрд╢реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛" рд╣реИред
рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╣реА рдорддрд▓рдм рдХреНрдпрд╛ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ props.children рдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рддреАрди рд╕рдВрднрд╛рд╡рдирд╛рдПрдБ рд╣реИрдВ:

рдХреЗрд╕ 1: props.children рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╣рд░ рдкрд╣рд▓реВ рдЦреБрд▓рд╛ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

рдпрджрд┐ рдпрд╣ рд╕рд╣реА рдерд╛, рддреЛ "рдЕрдкрд╛рд░рджрд░реНрд╢реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛" рд╢рдмреНрдж рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╣реЛрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП "рдХреЗрд╕ 1" рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рдХреЗрд╕ 2: props.children рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдХреЛрдИ рдкрд╣рд▓реВ рдЦреБрд▓рд╛ рдпрд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЬрдм рднреА рдЖрдк props.children рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк React.Children React.Children рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реИ (рдПрдордПрдордПрдордПрдЪ, рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реИ?) рдЬреЛ props.children рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рди рддреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП

javascript // This is used almost everywhere (even in the official React documentation) <div>{this.props.children}</div>

рди

javascript // This is often seen with the "Function as child" pattern MyComponent.propTypes = { children: PropTypes.func.isRequired, };

рдЬреИрд╕рд╛ рдХрд┐ рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рдЖрдо рд╣реИрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдХреЗрд╕ 2" рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рднреА рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред

рдХреЗрд╕ 3: props.children рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХреБрдЫ рдкрд╣рд▓реВ рдЦреБрд▓реЗ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред

рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЦреЛрд▓ рджреЗрдЧрд╛ рдХрд┐ "рдХреЗрд╕ 2" рдореЗрдВ рдПрдХ рдпрд╛ рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдг рдорд╛рдиреНрдп рд╣реИрдВред
рд▓реЗрдХрд┐рди рддрдм рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рд╕рдЯреАрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ props.children рдХреМрди рд╕реЗ рдкрд╣рд▓реВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рдЦреБрд▓реЗ рддреМрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ рдФрд░ рдХреМрди рд╕реЗ рдкрд╣рд▓реВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрд╛рд░рджрд░реНрд╢реА рд╣реИрдВред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ рдХреБрдЫ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╣реИ?

рдФрд░ рдЖрдЦрд┐рд░реА рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ:

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ props.children рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдмрдЪреНрдЪреЗ (рдПрдХ рдЕрдпрд╕реНрдХ рдЕрдзрд┐рдХ) рдмрд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд░рдгреА рд╣реЛрддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдкреНрд░реАрдХреНрдЯ" рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)? рдЗрд╕рд╕реЗ рдЪреАрдЬреЗрдВ рдЗрддрдиреА рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рдирд╣реАрдВ?

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рджред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

_Oqueque рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛_ рдЗрд╕ рддрдереНрдп рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ children рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ: Arrays, рдЯреБрдХрдбрд╝реЗ, рдПрдХрд▓ рддрддреНрд╡, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ, рдЖрджрд┐ред

_React.Children_ рдореЗрдВ рдХреБрдЫ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ children _in рдХреЛ рдПрдХ рдПрдХреАрдХреГрдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЙрдкрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред рдмрдЪреНрдЪреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рдмрдЪреНрдЪреЗ рд╣реИрдВ (рдПрдХ рдЕрдпрд╕реНрдХ рдЕрдзрд┐рдХ) рдмрд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд░рдгреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдкреНрд░реАрдХреНрдЯ" рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)?

рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдпрд╣ JSX рдореЗрдВ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИ, children рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреА рддрд░рд╣ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

<Component children={...}/>

рдЬрдм рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ DOM рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рджреЛ рдПрдХрд▓-рдЖрдЗрдЯрдо рд╕рд░рдгрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рджреЛ рдЖрджрд┐рдо рдорд╛рди (рдЬреИрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕) рд╕рдорд╛рди рд╣реИрдВред

рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ React.Children рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдпрд╣ рд▓реЗрдЦ рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдерд╛!

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

_Oqueque рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛_ рдЗрд╕ рддрдереНрдп рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ children рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ: Arrays, рдЯреБрдХрдбрд╝реЗ, рдПрдХрд▓ рддрддреНрд╡, рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ, рдЖрджрд┐ред

_React.Children_ рдореЗрдВ рдХреБрдЫ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ children _in рдХреЛ рдПрдХ рдПрдХреАрдХреГрдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЙрдкрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред рдмрдЪреНрдЪреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдЫ рдмрдЪреНрдЪреЗ рд╣реИрдВ (рдПрдХ рдЕрдпрд╕реНрдХ рдЕрдзрд┐рдХ) рдмрд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд░рдгреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдкреНрд░реАрдХреНрдЯ" рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)?

рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдпрд╣ JSX рдореЗрдВ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИ, children рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреА рддрд░рд╣ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

<Component children={...}/>

рдЬрдм рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ DOM рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рджреЛ рдПрдХрд▓-рдЖрдЗрдЯрдо рд╕рд░рдгрд┐рдпрд╛рдБ рд╕рдорд╛рди рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рджреЛ рдЖрджрд┐рдо рдорд╛рди (рдЬреИрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕) рд╕рдорд╛рди рд╣реИрдВред

рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ React.Children рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдпрд╣ рд▓реЗрдЦ рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдерд╛!

рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @danburzo ред
рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ "рдЕрдкрд╛рд░рджрд░реНрд╢реА" рд╢рдмреНрдж рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рдЕрд░реНрде рдирд┐рдХрд╛рд▓рд╛ рд╣реИред
рд░рд┐рдПрдХреНрдЯ рдкреНрд░рд▓реЗрдЦрди рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ props.children рдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рдВрдШ рдкреНрд░рдХрд╛рд░ рд╣реИ рдФрд░ рдпрд╣ рдЗрд╕рдХреЗ рдареЛрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдпреВрдирд┐рдпрди рдкреНрд░рдХрд╛рд░ рд╣рдореЗрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ)ред

рдореБрдЭреЗ рдмрд╕ рдПрдХ рдкреБрд░рд╛рдирд╛ рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рд╡рд┐рд╖рдп рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЙрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдХреНрдпрд╛ рдЦреБрд╢реА рдорд┐рд▓рддреА рд╣реИред? (рдореИрдВрдиреЗ reactjs.org => reactjs / reactjs.org # 914 рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛ рд╣реИ):

https://github.com/facebook/react/pull/6018/files/91223423410f107ff83a8a6ce3158c488247292f?short_path=ef171787#diff -ef51787305cfed62f564284747d4d4de

рдлрд┐рд░ рднреА рдореИрдВ рджреВрд╕рд░рд╛ рдкреНрд░рд╢реНрди рдлрд┐рд░ рд╕реЗ рдкреВрдЫрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:
"Props.children" рдХреНрдпреЛрдВ рдирд╣реАрдВ рдПрдХ рд╕рд░рдгреА рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдЪреНрдЪрд╛ рд╣реИ (рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рд╡рд┐рд╕реНрдордп рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЦрд┐рд▓рд╛рдл рдЙрд▓реНрд▓рдВрдШрди рд▓рдЧрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ => рдпрджрд┐ рдирд╛рдо "рдмрдЪреНрдЪреЗ" рдпрд╛ "рдЖрдЗрдЯрдо" рд╣реИрдВ рдпрд╛ "рдЯреЛрдХрди" рдЖрдк рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ)?
рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╣реИ? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рдиреАрдЪреЗ "checkResult" рдХреА рдЧрдгрдирд╛ рдЙрд╕ рд╕рдордп рдХреА рдЦрдкрдд рд╣реИ:

const
  child1 = ...,
  child2 = ...,
  child1IsArray = Array.isArray(child1),
  child2IsArray = Array.isArray(child2),

  checkResult = child1IsArray && child2IsArray
     && child1.length === 1 && child2.length === 1
     && child1[0] === child2[0]; 

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЕрдЧрд░ рдкреВрдЫрдирд╛ рдлрд┐рд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдХрд╖реНрдЯрдкреНрд░рдж рд▓рдЧрддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд┐рд░реНрдгрдп рдХреЗ рд╕рд╣реА рдХрд╛рд░рдг рдХреЛ рдЬрд╛рдирдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ ...ред

рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЗ рд╕рд╛рде рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрд╛! рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЬреИрд╕реЗ рдПрдХрд▓ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдПрдХрд▓-рдЖрдЗрдЯрдо рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ _exact_ рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЖрдк рдЕрднреА рднреА рдПрдХ рдПрдХрд▓ рдмрдЪреНрдЪреЗ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдк (рдЬреЗрдПрд╕рдПрдХреНрд╕ рд╢реЙрд░реНрдЯрд╣реИрдВрдб рдХреЗ рдмрдЬрд╛рдп) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рдЕрдкрдиреА рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХреЗ рд╕рд╛рде рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╡реНрдпрдХреНрдд рдХреА рдХрд┐ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

@danburzo рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред

Mhh, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рд╢рд╛рдпрдж рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдХреЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЙрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдирд┐рд░реНрдгрдп рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рдпрд╛рдж рд╣реЛрдЧрд╛ ...
рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╕реВрдХреНрд╖реНрдо рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рдмрдЪреНрдЪреЛрдВ рдХреЛ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд╕рдВрднрд╛рд▓ рд░рд╣реЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╕реЗ рдкреВрдЫреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ Test1 рдФрд░ Test2 рдХреЗ рдШрдЯрдХ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ (рдЖрдк - рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдорд░реНрдердХ рдХреЗ рд░реВрдк рдореЗрдВ - рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЙрддреНрддрд░ "рдирд╣реАрдВ" => Test2 DE1 рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЧрд╛ рдХрд┐ рдЧреБрдо рд╣реБрдИ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Test1 рд╣реЛрдЧрд╛ рдирд╣реАрдВ - рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ рдЕрдЧрд░ рдЖрдк рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдереЗ?

const
  h = React.createElement,
  Test1 = () => h('div', null, h('br'), h('br')),
  Test2 = () => h('div', { children: [h('br'), h('br')] });

ReactDOM.render(
  h('div', null, h(Test1), h(Test2)),
  document.getElementById('container')
);

рд╡реИрд╕реЗ: рдпрджрд┐ Test2 рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдЧреА, рддреЛ рдХреБрдЫ рд╕реВрдХреНрд╖реНрдо рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рд╣реЛрдВрдЧреЗ рдпрджрд┐ рдЖрдк рдХреБрдЫ createElement рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣рд╛рдЗрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рдиред

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг: рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкреВрдЫреЛ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдХреНрдпрд╛ "рдмрдЪреНрдЪреЛрдВ: PropTypes ...." рдРрд╕рд╛ рд▓рдЧреЗрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдХрдо рд╕реЗ рдХрдо рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдХреЗ рд▓рд┐рдП)ред

рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рдХреЛ: рдпрджрд┐ рдкреНрд░рд╢реНрди рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд┐рд░реНрдгрдп рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рд╢рд╛рдпрдж рд╕реНрд╡рд╛рдж рдХрд╛ рдорд╛рдорд▓рд╛ рдерд╛, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

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

рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд╕реВрдХреНрд╖реНрдо рдореБрджреНрджреЗ рд╣реИрдВ рдЬреЛ рдмрдЪреНрдЪреЛрдВ рдХреЛ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд╕рдВрднрд╛рд▓ рд░рд╣реЗ рд╣реИрдВред

рд╣рдо рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рд╕реНрдкрд╖реНрдЯ children рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реАрдзреЗ React.createElement рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп JSX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдореБрджреНрджреЗ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИрдВред

@aweary рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

kocokolo picture kocokolo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

h1orz picture h1orz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MoOx picture MoOx  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

UnbearableBear picture UnbearableBear  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

krave1986 picture krave1986  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ