React: рд░реЗрдВрдбрд░ рд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝рд╛ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рд╕рд┐рддре░ 2014  ┬╖  148рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react


рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рд╕реЗ рдиреЛрдЯ:

рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рднреА рдпрд╣реА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдард┐рди рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЗрдЪреНрдЫрд╛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╕рд╣рд╛рдпрдХ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ (рджрд╛рд╣рд┐рдиреЗ рд╣рд╛рде рдХреЗ рдХреЙрд▓рдо рдореЗрдВ рдмрдЯрди рд╣реИ) рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдЖрдк рдЪрд░реНрдЪрд╛ рдореЗрдВ рдореВрд▓реНрдп рдирд╣реАрдВ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рддрдм рддрдХ рдЯрд┐рдкреНрдкрдгреА рди рдХрд░реЗрдВред "рдореИрдВ рднреА" рдФрд░ "+1" рдореВрд▓реНрдпрд╡рд╛рди рдирд╣реАрдВ рд╣реИрдВ, рди рд╣реА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╣реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк <tr> рдпрд╛ <dd> рддрддреНрд╡ рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ <div> рдХреЗ рд╕рд╛рде)ред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдзрдпрд╛рди рдореЗ рд░рдЦрддреЗ рд╣реБрдП:

var ManagePost = React.createClass({

  render: function() {
    var posts = this.props.posts

    var something;
    var somethingelse;

    var row = posts.map(function(post){
      return(
        <div>
          <div className="col-md-8">
          </div>
          <div className="cold-md-4">
          </div>
        </div>
      )
    });

    return (
        {row}
    );
  }

});

рдпрджрд┐ рдЖрдк <div></div> рдХреЛ map рдореЗрдВ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ: _Adjacent XJS рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╕рдВрд▓рдЧреНрди рдЯреИрдЧ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП_

рдпрд╣ рддрдм рддрдХ рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЖрд╕-рдкрд╛рд╕ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛, рдмрд▓реНрдХрд┐ рд╡реНрдпрд░реНрде, divs рдХрд┐ рдпрд╣ рдЖрдЙрдЯ рдЗрд╢реНрдпреВ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ 0.11.1 . рдЪрд▓ рд░рд╣рд╛ рд╣реВрдБ

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд░рд┐рдПрдХреНрдЯ 16 рдмреАрдЯрд╛ 1 рдХреЗ рдмрд╛рдж рд╕реЗ рдШрдЯрдХреЛрдВ рд╕реЗ рд╡рд╛рдкрд╕реА рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрднреА рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЕрднреА рднреА рдХреБрдЫ рд╕реАрдорд╛рдПрдБ рд╣реИрдВ (SSR рд╕рдорд░реНрдерди рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ) рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ #8854 рдореЗрдВ рдЯреНрд░реИрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрд┐рдо 16 рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдкрд╣рд▓реЗ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред

рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

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

рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рд░реИрдкрд░ рдирд╣реАрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:

return React.DOM.div(...)React.DOM.div(...)

рдЬреЛ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рдЬреБрдЕрд▓ рдореИрдкрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рдкреЗрдЬ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ [div, div] рддрдХ рдбрд┐рд╕реБрдЧрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдХрдард┐рди рд╣реИ, рдХреБрдЫ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИ рдФрд░ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

(рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЕрднреА рддрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред)

IIRC @syranide рдХреА рдЗрд╕ рдкрд░ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╣реИрдВ

@chenglou рд╣реЗрд╣реЗ ред

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

рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдХ рдШрдЯрдХ рдкрд░ рд▓реМрдЯрдиреЗ рдХреА рд╕рд╛рджрдЧреА рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЬреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ <table><TableHeader /></table> рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рддрдиреА рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ TableHeader рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдЬрд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХреЗрд╡рд▓ "рд╕рдордЧреНрд░ рдШрдЯрдХ" рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдШрдЯрдХреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдЪрд▓рддреА рд╣реИ рдЬреЛ "рд╕рдордЧреНрд░ рдШрдЯрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ"ред рдШрдЯрдХ "рдЬреЛ рд╕рдордЧреНрд░ рдШрдЯрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ" рдХреЛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЬреНрдЮрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рдордЧреНрд░ рдШрдЯрдХреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЬрдмрдХрд┐ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рд╣реЛрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рджреБрд░реБрдкрдпреЛрдЧ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

@sebmarkbage рд╢рд╛рдпрдж рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рднреА рд╣реИрдВ :)

рд╣рдо рд╢рд╛рдпрдж рдХрднреА рднреА рдЙрд╕ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЛ рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдВрдЧреЗред рдЖрдкрдХреЛ рдПрдХ рд░реИрдкрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреИрд╕реЗ

<>
  <div className="col-md-8">
  </div>
  <div className="cold-md-4">
  </div>
</>

рдпрд╛

[
  <div className="col-md-8">
  </div>,
  <div className="cold-md-4">
  </div>
]

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░, рдпрд╣ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдмрдЪреНрдЪрд╛ рдХрдИ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рдХреНрдпрд╛ рдпрд╣ jQuery рдпрд╛ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрддреНрд╡реЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк $('#id-name').children() рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдореНрди:

<div id="id-name">
  <div>
    <div class="class-name">
    </div>
  </div>
</div>

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ <div> рдФрд░ <div class="class-name"> рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред (рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ)

рдпрд╣ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ @AdamKyle рдиреЗ рдкрд╣рд▓реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рдореЗрд░реЗ рдШрдЯрдХ рдиреЗ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдХреБрдЫ рдорд┐рдирдЯ рдмрд┐рддрд╛рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╣реАрдВ рдиреЛрдЯрд┐рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╢рд╛рдпрдж рдореИрдВ рдЪреВрдХ рдЧрдпрд╛? рд╢рд╛рдпрдж рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИ:

var Optimistic = React.createClass({
  render: function() {
    return ( 
      <h1>{this.props.name} loves React</h1>
      <p>React doesnтАЩt. Idea: sprinkle some divs here and there.</p>
    );
  }
});

React.render(
  <Optimistic name="Peter" />,
  document.getElementById('myContainer')
);

@gabssnake рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде JSX рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП рдереА "рдЖрд╕рдиреНрди XJS рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╕рдВрд▓рдЧреНрди рдЯреИрдЧ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП"; рдХреНрдпрд╛ рдЖрдкрдиреЗ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджреЗрдЦреА рдпрд╛ рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛?

рдЖрдкрдХреЗ рдЙрддреНрддрд░ @spicyj рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЦреИрд░, рдореЗрд░рд╛ рдорддрд▓рдм рд░рд┐рдПрдХреНрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ рдПрдХ рдиреЛрдЯрд┐рд╕ рдерд╛ред рд╣рд╛рдВ, рдХрдВрд╕реЛрд▓ рдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ, рд▓реЗрдХрд┐рди рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдИред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЦреЛрдЬрд╛ рдФрд░ рдпрд╣рд╛рдВ рдкрд╣реБрдВрдЪрд╛ред

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

рдмрд╕ рдЗрддрдирд╛ рд╣реА рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ.. рдореИрдВ рдШрдЯрдХ _but_ рд╕реЗ рдХрдИ рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рд╡рдХрд╛рд▓рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕реЗ render* рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореИрдВ render рд╕реЗ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реВрдВ:

  render: function () {
    return (
      <div className={this.getClassName()}
           style={{
             color: this.props.color,
             backgroundColor: this.props.backgroundColor
           }}>
        {condition ?
          this.renderSomething() :
          this.renderOtherThing()
        }
      </div>
    );
  },

  renderSomething() {
    return (
      <>
        <div className='AboutSection-header'>
          <h1>{this.props.title}</h1>
          {this.props.subtitle &&
            <h4>{this.props.subtitle}</h4>
          }
        </div>,

        {hasChildren &&
          <div className='AboutSection-extra'>
            {this.props.children}
          </div>
        }
      </>
    );
  }

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╢рд╛рдпрдж рдЪреБрдк рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ key s рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

@gaearon рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬреЛ рдереЛрдбрд╝рд╛ рдмреЛрдЭрд┐рд▓ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рд╛рдБ) ... buuuuut, рдЖрдк рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЦреБрдж <Frag> рдШрдЯрдХ рд╣реИрдХ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдУрд╡рд░рд▓реЛрдбреЗрдб React.render ) ... рдЖрдк return <NoopComp>...</NoopComp>.props.children рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк рд╣реИрдХреНрд╕ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореЗрд░рд╛ рдмреБрд░рд╛, рдореИрдВрдиреЗ React.createElement рдирд╣реАрдВ React.render рдУрд╡рд░рд▓реЛрдб рдХрд┐рдпрд╛ред

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

@gaearon рд╣рд╛рдБ, рдЖрдк рдЕрднреА рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рджреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╛ рддреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд▓рдЧрддрд╛ рд╣реИ) ...

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

@gaearon рдЖрд╣ рд╣рд╛рдБ, рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЙрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдорд╛рдирд╕рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪреБрдирддрд╛ рд╣реВрдВ :), рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП <MyComp children={this.renderWhatever()} /> рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЗ рдЖрд╕-рдкрд╛рд╕ рдХреЗ рдмрдЪреНрдЪреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреБрдЫ рдЪрдкрдЯреЗ рд╕рд╣рд╛рдпрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рд╣рд╛рдБ)ред

рдПрдХ рдФрд░ рдорд╛рдорд▓рд╛ рдЬреЛ рдореИрдВрдиреЗ UI рдХрд┐рдЯ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рд╣реИред рдЬрдм рдЖрдк рдмрдЪреНрдЪреЛрдВ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд░рдЦ рд░рд╣реЗ рд╣реИрдВ рдЬреИрд╕реЗ:

return (
  <div style={{
    position: fixed
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    overflow-y: scroll;
  }}>
    {this.props.children}
  </div>
);

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

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдпрд╣рд╛рдВ #3415 рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдХрдард┐рди рдФрд░ рджреБрд░реНрд▓рдн рд╣реИред

рдореБрдЭреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдВрддрд░рд┐рдХ (рдЕрднреА рддрдХ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдлреЗрдВрдХ рджреВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдбреАрдУрдПрдо рдореЗрдВ рдРрд╕реЗ рдЖрднрд╛рд╕реА рдореВрд▓ рддрддреНрд╡реЛрдВ/рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

<A>
    <B></B>
    <Fragment>
        <C></C>
        <D></D>
    </Fragment>
    <E></E>
</A>

рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛

<a>
    <b></b>
    <!--<fragment data-reactid="">-->
        <c></c>
        <d></d>
    <!--</fragment>-->
    <e></e>
</a>

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ c рдФрд░ d рдХреЛ sth рдХреА рд╕рдВрддрд╛рди рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред (рдмреА рдФрд░ рдИ рдХреЗ рд╕рд╛рде рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрд╕реНрдЯреЗрдб рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рд╣рд┐рдд)ред рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рдЕрд░реНрдердкреВрд░реНрдг рдиреМрдХрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдврд╛рдВрдЪреЗ "рджреБрд░реБрдкрдпреЛрдЧ" рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрд╛ рд╣реИред

@Prinzhorn рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд░рд┐рдПрдХреНрдЯ рдХреЗ JSX рдХреЗ рд╕рд╛рде DOM рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред

рдпрджрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ: @Prinzhorn рдХрд╛ DOM рдореЗрдВ "рдЯреБрдХрдбрд╝рд╛ рдШрдЯрдХреЛрдВ" рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HTML рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╡рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рдиреЙрдХрдЖрдЙрдЯ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдиреЙрдХрдЖрдЙрдЯ рдЗрди "рдЖрднрд╛рд╕реА рддрддреНрд╡реЛрдВ" рдХреЛ рдмреБрд▓рд╛рддрд╛ рд╣реИред

<!-- ko component: "message-editor" -->
<!-- /ko -->

( рдиреЙрдХрдЖрдЙрдЯ рдбреЙрдХреНрд╕ рд╕реЗ)

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ - рдлреНрд▓реЗрдХреНрд╕рдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрддрд┐рд░рд┐рдХреНрдд рд░реИрдкрд┐рдВрдЧ рддрддреНрд╡ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

@aldendaniels рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣рдордд рд╣реИрдВ, рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлреНрд▓реЗрдХреНрд╕рдмреЙрдХреНрд╕ рдореБрджреНрджреЛрдВ рдореЗрдВ рднрд╛рдЧ рдЪреБрдХрд╛ рд╣реВрдВред

рдореИрдВ рдирд┐рд░реНрднрд░ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдХреЗ рд╕рд╛рде рдлреНрд▓реЗрдХреНрд╕рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдЬрд╣рд╛рдВ рдП рдкрд╣рд▓реЗ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдЧрд╛, рдЙрд╕рдХреЗ рдмрд╛рдж рдмреА рдпрд╛ рд╕реА рдпрд╛ рдбреА рдП рдХреЗ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдбреНрд░реЙрдкрдбрд╛рдЙрди рдХреА рдЙрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

<A>
 <Drop />
 <C><Drop /><Drop /></C>
</A>

рдП, рдмреА, рд╕реА, рдФрд░ рдбреА рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ class B {render(){ this.props }} рд╕реЗ function B(props){ return [...]; } рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдмрдЪреНрдЪреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд╕реАрдПрд╕рдПрд╕ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдРрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдореИрдВ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░реВрдВрдЧрд╛ рдпрджрд┐ рдЗрдиреНрд╣реЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рджреВрд╕рд░реЗ рдШрдЯрдХ рдХреЛ рдмреА, рд╕реА рдФрд░ рдбреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред


рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рд╢рд╛рдпрдж рдЗрд╕реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рд╕реБрд▓рдЭрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ? рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ред

рдореИрдВрдиреЗ рдЖрдЬ рдПрдХ рдкрд░рд┐рджреГрд╢реНрдп рдорд╛рд░рд╛ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ: рдПрдХ рдШрдЯрдХ рдЬреЛ рдПрдХрд╛рдзрд┐рдХ <script> рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдкреГрд╖реНрда рдХреЗ <head> рддрддреНрд╡ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдХреЛрдИ рднреА рд░реИрдкрд░ рддрддреНрд╡ рдЦрд░рд╛рдм рд╣реЛрдЧрд╛ред

рдореЗрд░рд╛ рдкрд░рд┐рджреГрд╢реНрдп рдПрдХ рдШрдЯрдХ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬреЛ рдкреГрд╖реНрда рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд░рдирдЯрд╛рдЗрдо рдХреЛрдб рдХреЗ рд▓рд┐рдП <script> рдЯреИрдЧ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдПрдХ рдФрд░ <script> рдЯреИрдЧ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдЬреЛ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рддрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд░рдирдЯрд╛рдЗрдо рдХреЛрдбред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

<html>
    <head>
        <script language="runtime.resources.en-us.js"></script>
        <script language="runtime.js"></script>
    </head>
    <body>
    ...
    </body>
</html>

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдХреЛрдб рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

var RuntimeScripts = require('./Runtime')
...
return (
    <html>
        <head>
            <RuntimeScripts language="en-us" />
        </head>
    </html>
)
...

рдореИрдВ рдХреБрдЫ рдлреНрд▓реЗрдХреНрд╕рдмреЙрдХреНрд╕ рдореБрджреНрджреЛрдВ рдореЗрдВ рднреА рднрд╛рдЧ рдЧрдпрд╛ред рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдХреБрдЫ рднреА рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлреНрд▓реЗрдХреНрд╕рдмреЙрдХреНрд╕ рдХреА "рд╕реБрдВрджрд░рддрд╛" рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЬрдЧрд╣ рдХрдо "рдЖрд╡рд░рдг" рддрддреНрд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдЖрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддрдм рднреА рдЖрдк рд╣рд░ рдЬрдЧрд╣ рд░реИрдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ рдЖрдк рд╣рдореЗрд╢рд╛ рдбрд┐рд╡/рдбрд┐рд╡ рдпрд╛ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдЬреЛ рдХреБрдЫ рднреА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЙрд╕реЗ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдХрдВрдЯреЗрдирд░ рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рди рд╣реЛред

рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рд╕рднреА рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк <BunchOfComponents /> рдХреЛ {getBunchOfComponents()} рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреГрд╢реНрдп рдЖрдЙрдЯрдкреБрдЯ рд╕рдорд╛рди рд╣реЛрдЧрд╛, рдмрд┐рдирд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд╣реЛрдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдФрд░ рддрдХрдиреАрдХреА рдореБрджреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдЬрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреБрдХрдбрд╝реЗред

@syranide рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рдЬрдм рдХреЛрдИ рдШрдЯрдХ рдмрджрд▓рддрд╛ рд╣реИ рддреЛ рдЙрд╕рдХреЗ рд╕рднреА рднрд╛рдИ-рдмрд╣рдиреЛрдВ рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ...

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрджрд┐ рдЖрдк рд╕рд╛рджреЗ рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдПрдХ рд╕рд░рдгреА рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВред
IOW рдпрджрд┐ рддрддреНрд╡реЛрдВ рдХреА рд▓реМрдЯрд╛рдИ рдЧрдИ рд╕рд░рдгреА рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рддреЛ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рди рдХрд░реЗрдВред

@syranide рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рдЬрдм рдХреЛрдИ рдШрдЯрдХ рдмрджрд▓рддрд╛ рд╣реИ рддреЛ рдЙрд╕рдХреЗ рд╕рднреА рднрд╛рдИ-рдмрд╣рдиреЛрдВ рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ...

@wmertens рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдХрдИ рдмрд╛рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реИрд╕реЗ рднреА рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдк рд╡реИрд╕реЗ рднреА рдкреНрд░реЛрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рд╛рдВ, рдпрд╣реА рдЕрдВрддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд╣реА рд╣реИ, рдпрд╣ рдПрдХ рдЕрдиреБрдХреВрд▓рди рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред

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

рдпрд╣ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдФрд░ рдпрд╣ JSX рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдШрдЯрдХ = рдПрдХ рддрддреНрд╡/рдиреЛрдб рдХреА рддрдХрдиреАрдХреА, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдФрд░ рд╕рд╣рдЬ рдзрд╛рд░рдгрд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред рдореИрдВ рджреЗрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмреЛрд▓ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрд╡реЗрдЪреНрдЫрд╛ рд╕реЗ рд╣рд╛рд░ рдирд╣реАрдВ рдорд╛рдиреВрдВрдЧрд╛, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдзрд╛рд░рдгрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреЗ рдпрд╛ рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓рди рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЕрдиреБрдХреВрд▓рди рд╣реА рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рд╣реИ рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@syranide рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рд░реИрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдПрдЪрдЯреАрдПрдордПрд▓ рдореЗрдВ рддрддреНрд╡, рдЬреИрд╕реЗ рдЯреЗрдмрд▓, рд╕реВрдЪрд┐рдпрд╛рдВ, рдлреНрд▓реЗрдХреНрд╕рдмреЙрдХреНрд╕, рд╣реЗрдб ... рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдирд╛
рдЬреЛ рдмрджрд╕реВрд░рдд рдХреЛрдб рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рд╡рд░реНрдЪреБрдЕрд▓ рд░реИрдкрд░ рддрддреНрд╡ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдЦреБрд╢ рд╣реВрдВ рдЬреЛ рдХреЗрд╡рд▓ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╢реБрдХреНрд░, рдордИ 29, 2015, 3:56 рдЕрдкрд░рд╛рд╣реНрди рдХреЛ рдПрдВрдбреНрд░рд┐рдпрд╛рд╕ рд╕реНрд╡реЗрдиреНрд╕рди рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

@syranide https://github.com/syranide рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ
рдШрдЯрдХ рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕рдХреЗ рд╕рднреА рднрд╛рдИ-рдмрд╣рдиреЛрдВ рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ...

@wmertens https://github.com/wmertens рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдХрдИ рдмрд╛рд░ рдЖрдк рдХрд░реЗрдВрдЧреЗ
рд╡реИрд╕реЗ рднреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рдХрд╛рд░рдг, рдпрд╛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЖрдк рд╡реИрд╕реЗ рднреА рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдкрд░рдВрддреБ
рд╣рд╛рдВ, рдпрд╣реА рдЕрдВрддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рддрд░реАрдХрд╛ рд╕рд╣реА рд╣реИ,
рдпрд╣ рдПрдХ рдЕрдиреБрдХреВрд▓рди рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред

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

рдпрд╣ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдФрд░ рдпрд╣ JSX рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐
рдЖрдк _one . рдХреА рддрдХрдиреАрдХреА, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдФрд░ рд╕рд╣рдЬ рдзрд╛рд░рдгрд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ
рдШрдЯрдХ = рдПрдХ рддрддреНрд╡/рдиреЛрдб_. рдореИрдВ рджреЗрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмреЛрд▓ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ
рдЗрд╕реЗ рд╕реНрд╡реЗрдЪреНрдЫрд╛ рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдзрд╛рд░рдгрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ
рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреЗ рдпрд╛ рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓рди рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐
рдЕрдиреБрдХреВрд▓рди рд╣реА рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рд╣реИ рдЬрд┐рд╕рд╕реЗ рд▓реЛрдЧ рдЗрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/facebook/react/issues/2127#issuecomment -106810565ред

fwiw, рд░рд┐рдПрдХреНрдЯ рдореЗрдВ "рдЯреБрдХрдбрд╝рд╛" рдШрдЯрдХ рдХреЛ рд╣реИрдХ рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рд╕реЗ рд░рд┐рдПрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдШрдЯрдХреЛрдВ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рдж рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп "рдХреЛрдИ рдХреБрдВрдЬреА рдЖрдкреВрд░реНрддрд┐ рдирд╣реАрдВ" рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдлреЗрдВрдХреЗрдЧрд╛ред

рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА, рд╡рд╣ рд╣реИрдХ рдХреЗрд╡рд▓ рд╡рд╣реА рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ @gaearon рдКрдкрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ - рдмрджрд╕реВрд░рдд рд╕рд░рдгреА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕/рдЖрдкрдХреЗ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдореЗрдВ рдордирдорд╛рдиреА рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ - рдФрд░ рдПрдХ рдШрдЯрдХ рдХреА рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдХреА рдЬрдбрд╝ рдкрд░ рдПрдХрд╛рдзрд┐рдХ рдиреЛрдбреНрд╕ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдирд╣реАрдВред

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

<Main>
  <Foo />
  <Fragment>
    <Bar />
    <Baz />
  </Fragment>
</Main>

рдбреЛрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

<div>
  <div>Foo</div>
  <div>Bar</div>
  <div>Baz</div>
</div>

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд┐рджреНрдзрд╛рдВрдд-рдХрдо-рдЖрд╢реНрдЪрд░реНрдп рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдШрдЯрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреАрдУрдПрдо рдХреЗ рд╕рд╛рде рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА "рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдЪреАрдЬреЗрдВ" рдХрд░рддреЗ рд╣реИрдВ (рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдорд╣реЛрд▓ рдкреИрдЯрд░реНрди рджреЗрдЦреЗрдВ)ред рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдШрдЯрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рд╣реА рддрддреНрд╡ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдареАрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЛрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордЭреМрддрд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

рдпрд╣ "рдЕрдиреБрдХреВрд▓рди" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рддреЛ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╕рд░рдгреА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, _wrapper рддрддреНрд╡ рд╕реНрдЯрд╛рдЗрд▓ рдФрд░ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдЧрдВрднреАрд░ рддрд░реАрдХреЛрдВ рд╕реЗ рддреЛрдбрд╝рддреЗ рд╣реИрдВ_ред рдЯреЗрдмрд▓реНрд╕ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлреНрд▓реЗрдХреНрд╕рдмреЙрдХреНрд╕ рднреА рдПрдХ рдкреНрд░рдореБрдЦ рдореБрджреНрджрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реАрдПрд╕рдПрд╕ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдлреНрд▓реЗрдХреНрд╕ рдирд┐рдпрдореЛрдВ рдХреЛ рд░реИрдкрд░ рддрддреНрд╡реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░рдг рдореМрдЬреВрдж рд╣реИрдВ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдмрджрд╕реВрд░рдд рд╣реИред

рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рд╕рднреА рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ {getBunchOfComponents ()} рдХреЗ рд╕рд╛рде рдФрд░ рджреГрд╢реНрдп рдЖрдЙрдЯрдкреБрдЯ рд╕рдорд╛рди рд╣реЛрдЧрд╛, рдмрд┐рдирд╛ рд░реВрдЯ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдФрд░ рддрдХрдиреАрдХреА рдореБрджреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛ред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреГрдердХ, рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдордЭреМрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рд╕реНрд╡рд░реНрдЧ рдЙрдирдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╡реЗ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдХрд╣реАрдВ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@thomasboyt

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореЗрд░реА рдЧрд▓рддреА, рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рддрд╛рд▓рд┐рдХрд╛-рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдХреБрдЫ рддрд░реНрдХреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рдореИрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЖрдк рдЬреЛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдкрд╛рд░рджрд░реНрд╢реА рд╣реЛрдиреЗ рдореЗрдВ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдкрд╛рд░рджрд░реНрд╢реА рдЖрд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдЗрд░рд╛рджрд╛ рд╣реИ рд╡рд╣ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдкрд╛рд░рджрд░реНрд╢реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП <Wrapper1><Wrapper2>...</Wrapper2></Wrapper1> , Wrapper1 Wrapper2 рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ред рддреЛ рд╢рд╛рдпрдж wrapMyElements(...) рдЕрднреА рднреА рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ (рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рд╣рд┐рдд)ред

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

рдЕрд╡рдпрд╡ рд╕рд┐рд░реНрдл рдЧреВрдВрдЧрд╛ рдЖрд╡рд░рдг рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ, рдЙрдирдХрд╛ рдПрдХ рдЙрджреНрджреЗрд╢реНрдп рд╣реИред IMHO рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдЕрдкреЗрдХреНрд╖рд╛рдПрдБ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, React.render рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рд╕рд╛рдереА рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ рдПрдХ рддрддреНрд╡ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреЛрдбреНрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдм рдиреЛрдбреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдЙрддреНрдкрдиреНрди рдХрд░рдиреА рд╣реЛрдЧреАред

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджрд╛ рдкрдардиреАрдпрддрд╛ рдХрд╛ рд╣реИ рдЬреЛ рдЖрдИрдПрдордПрдЪрдУ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╡рд┐рдХреНрд░рдп рдмрд┐рдВрджреБ рд╣реИ, рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИред

<table>
  <tr>
    <td />
    <td />
    <td />
  </tr>
  <tr>
    <Columns1 />
    <Columns2 />
  </tr>
</table>

рдЗрд╕реЗ рджреЗрдЦрдХрд░ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдХрд┐ рддреАрд╕рд░рд╛ рд╕реЗрд▓ рдХрд╣рд╛рдВ рд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ? рд╢рд╛рдпрдж рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд▓рдд рд╣реИ рдФрд░ рдпрд╣ 2 рдпрд╛ 4 рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░реЛрдк рдпрд╛ рдмрд╛рд╣рд░реА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ? рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрдИ рд░реВрдк рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рддрдм рдФрд░ рдЕрдзрд┐рдХ рдмрдврд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдЖрдк рдЕрдиреНрдп рдЧреИрд░-HTMLDOM рдлрд╝реНрд░рдВрдЯрдПрдВрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рд╕реНрдкрд╖реНрдЯ рдЕрдкреЗрдХреНрд╖рд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдПрдХ рдФрд░ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рддрддреНрд╡ рдЕрдкрд╛рд░рджрд░реНрд╢реА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк <tr /> рдХреЛ <MyMagicalTr /> рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХрд┐рддрдиреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА <MyMagicalTr /> рдХреЗрд╡рд▓ <MyMagicalTd /> рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреГрдердХ, рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдордЭреМрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рд╕реНрд╡рд░реНрдЧ рдЙрдирдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╡реЗ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдХрд╣реАрдВ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

"рдЗрд╕рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрд▓рдЧ-рдерд▓рдЧ рдХрд░рдиреЗ рдкрд░ рд╕рдордЭреМрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ...", рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдореБрдЭрд╕реЗ рдкреВрдЫрддреЗ рд╣реИрдВ, рдпрджрд┐ рдХреЛрдИ рдШрдЯрдХ рдХрдИ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдЕрдм рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдШрдЯрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рд▓реАрдХ рд╣реЛ рд░рд╣рд╛ рд╣реИред

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

IMHO рдореБрдЭреЗ {getBunchOfComponents()} рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣реА рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдпрд╣ рд╣рдореЗрдВ рдЕрдкрдиреА рдЙрдкрдпреЛрдЧреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░рджрд░реНрд╢рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП React.createSmartFragment() (рдпрд╛ w/e), рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рд╕рд░рдгреА/рдСрдмреНрдЬреЗрдХреНрдЯ-рдЬреИрд╕реА рдкреНрд░рдХрд╛рд░ рд▓реЗрдХрд┐рди рдПрдХ рдЬреЛ рдЕрдкрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдлрд┐рд░ рд╕реЗ, рд░рд┐рдПрдХреНрдЯ рджреЗрд╡ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реИрдВ (рдореИрдВ рдирд╣реАрдВ), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд┐рднрд┐рдиреНрди рджреБрд╖реНрдкреНрд░рднрд╛рд╡реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдпрд╣рд╛рдВ рдХреЛрдИ рдареЛрд╕ рддрд░реНрдХ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдкреНрд░рд╕реНрддреБрдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреИрдЯрд░реНрди рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рд╕рд╣рдордд рд╣реВрдВ, рднрд▓реЗ рд╣реА рдпрд╣ рд╕рдорд░реНрдерд┐рдд рдерд╛ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХреЗ рджрд╛рд░реНрд╢рдирд┐рдХ рдкрдХреНрд╖ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореБрдЭреЗ рдереЛрдбрд╝реА рдФрд░ рдХреЙрдлреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, @syranide), рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдХреНрд╖ рдкрд░, рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реА рд░рд╛рдд рдХреЛ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдЗрд╕ рджрд╛рдпрд░реЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реИ, рдЬреЛ рдЗрд╕ рд╕реНрдкрд╛рдЗрдХ рдХреА рдУрд░ рд▓реЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ: https://github.com/facebook/react/compare/master...thomasboyt:fragment

рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдбреЗрдореЛ рджрд┐рдпрд╛: http://www.thomasboyt.com/react-fragment-demo/

рдЪреАрдЬреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрдХреНрд╖ рдкрд░ рдХреБрдЫ рдЕрд╡рд▓реЛрдХрди:

  • рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬреЛ "1 рдШрдЯрдХ = 1 рдиреЛрдб" рд╕реЗ рдЕрдзрд┐рдХ рдиреЛрдбреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ;)
  • рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдбреАрдУрдПрдо рд╕рдВрдЪрд╛рд▓рди рдкрдХреНрд╖ рдкрд░ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рддрд╛рдХрд┐ ReactMultiChild рдЙрддреНрдкрдиреНрди рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдирд┐рд░реНрджреЗрд╢ рд╡рд╣реА рд░рд╣ рд╕рдХреЗрдВ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдиреЛрдб рдХреА рддрд░рд╣ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░ рд╕рдХреЗрдВред рдореИрдВ рдиреЛрдб рдЧрд┐рдирддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд╛рдЬреНрдп рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрд╛/рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбреАрдУрдПрдо рд░рд╛рдЬреНрдп рдЯреНрд░реИрдХрд┐рдВрдЧ рдореЗрдВ рдХреМрди рд╕реЗ рдиреЛрдбреНрд╕ рдЯреБрдХрдбрд╝реЗ рд╣реИрдВред рдЯрд┐рдкреНрдкрдгреА рдмрд╛рдбрд╝ рд▓рдЧрд╛рдиреЗ рдХреА рддрд░рд╣ рдХреБрдЫ @ рдкреНрд░рд┐рдВрдЬрд╝рд╣реЛрд░реНрди рдиреЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд╣реВрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рд╛рдкреЗрдХреНрд╖ рд▓рд╛рдЧрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреАрдУрдПрдо рд▓реБрдХрдЕрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
  • рдЙрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рддреНрдпрд╛рдЧрдиреЗ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ ReactMultiChild рдШрдЯрдХ рдХреЗ рд╕рднреА рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП _nodeCount рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рд╛, рддрд╛рдХрд┐ рдпрд╣ рд░реВрдЯ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХреЗ рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ, рдЬрдмрдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреА рдЧрд┐рдирддреА рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рдмрд╛рдж рдХреЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдЯреБрдХрдбрд╝реЗ рдХреА рдиреЛрдб рдЧрд┐рдирддреА рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА рдореЗрд░реА рд╢рд╛рдЦрд╛ рдкрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рджреЗрдЦреЗрдВ https://github.com/thomasboyt/react/issues/2)ред

  • рдХрдИ DOM рдСрдкрд░реЗрд╢рди рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ/рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ/рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдиреЛрдб рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рджреЗрдЦреЗ рдЧрдП рддрддреНрд╡ рдХреЗ рдореВрд▓ рдиреЛрдб рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ (рджреЗрдЦреЗрдВ https://github.com/thomasboyt/react/issues/3)ред рдЪреВрдВрдХрд┐ ReactMultiChild рдХрд╛ рдЕрдкрдбреЗрдЯ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рдЪрдХреНрд░ рдЗрд╕ рдЖрдИрдбреА рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдирд┐рдХрдЯрддрдо рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЛрдо рдиреЛрдб рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рдВрдЧрд╛ рд▓рдЧрддрд╛ рд╣реИред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреА "рдЕрд╕рд▓реА рдиреЛрдб" рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЦрдВрдб рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдЖрдВрддрд░рд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╣реЛред

рдореИрдВ рдЕрднреА рднреА рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЙрдирдХреЗ рд░реВрдЯ рдиреЛрдбреНрд╕ рдХреА рдЧрд┐рдирддреА рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдЙрд╕ рдбреЗрдореЛ рддрдХ рд▓реЗ рдЧрдпрд╛), рдФрд░ рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдФрд░ рдХрд╛рдлреА рджреЗрд░ рд░рд╛рдд рдХреЛ рд╣реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдЗрд╕рдореЗрдВ рдЭрдВрдХрд╛рд░ рдХрд░реЗрдВ:>

@thomasboyt IIRC рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╛рдзрд╛ mountIndex рджреНрд╡рд╛рд░рд╛ рд░рд┐рдПрдХреНрдЯ рд░реЗрдлрд░реЗрдВрд╕рд┐рдВрдЧ рдЪрд╛рдЗрд▓реНрдб рдиреЛрдбреНрд╕ рд╕реЗ рдЖрддреА рд╣реИ, рдпрд╣ рддрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдПрдХ "рдиреЛрдб" рдЕрдЪрд╛рдирдХ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдиреЛрдб рдмрди рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрдИ рдШрдЯрдХ рдЧрд╣рд░реЗ (рд▓рдкреЗрдЯрдХрд░)ред рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдБ рддреЛ рдпрд╣ рдмрд╣реБрдд рддреБрдЪреНрдЫ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдХрдИ рд░реВрдЯ рддрддреНрд╡реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдХрднреА рдирд╣реАрдВ рдмрджрд▓рддреАред

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреЗрд╡рд▓ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рдВрднрд╡рддрдГ mountIndex рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@syranide рд░рд╛рдЗрдЯ; рдЬрд┐рд╕ рд╕рдорд╛рдзрд╛рди рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдирдпрд╛ nodeIndex рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдиреЛрдб рдХрд╛ "рдЕрд╕рд▓реА рдСрдлрд╕реЗрдЯ" рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдФрд░ mountIndex рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдореЗрд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдЕрдкреНрд░рдпреБрдХреНрдд рд╣реИ)ред

рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдпрджрд┐ рдореВрд▓ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдШрдЯрдХ рдХреЗ nodeIndex рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рднреА рдкрд┐рдЫрд▓реЗ рд╕рд╣реЛрджрд░ рдШрдЯрдХ рдХреА рдиреЛрдб рдЧрдгрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдореИрдВрдиреЗ рдлреНрд▓реЗрдХреНрд╕рдмреЙрдХреНрд╕ рдореБрджреНрджреЛрдВ рдореЗрдВ рднреА рднрд╛рдЧ рд▓рд┐рдпрд╛ рд╣реИред @syranide рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ "getBunchOfComponents" рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛рдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП/рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред

@landabaso

function getBunchOfComponents(...) {
  return [<ColumnA key="a" />, <ColumnB key="b" />];
}

рдЕрд░реЗ,

рдореИрдВрдиреЗ рдкреВрд░рд╛ рдзрд╛рдЧрд╛ рдирд╣реАрдВ рдкрдврд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдПрдХ рд░реЗрдВрдбрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдЙрдкрдпреЛрдЧрдХреЗрд╕ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ:

http://stackoverflow.com/questions/30976722/react-performance-rendering-big-list-with-purerendermixin

рдпрджрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ ReactCSSTransitionGroup рдХреЛ рдЕрдм рд░реИрдкрд░ рдиреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд╣реИ рдирд╛?

@slorber рд╣рд╛рдБ, рдпрд╣ рд╢рд╛рдпрдж рд╕рдЪ рд╣реИред

рдкреНрд░рддрд┐рджрд┐рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рдЫреЛрдЯреЗ рдШрдЯрдХ рд╣реИрдВ (рдпрд╛рдиреА рдмрд╣реБрдд рдореЙрдбреНрдпреВрд▓рд░ рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВ), рддреЛ рдЖрдкрдХреЛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ divs рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

<div> рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрдиреНрд╣реЗрдВ <div> рдореЗрдВ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддрд╛рд▓рд┐рдХрд╛ рдкрдВрдХреНрддрд┐рдпреЛрдВ <tr> рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЖрдк <tr> рдХреЛ <tbody> $ рдореЗрдВ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди <tbody> рдХреА рдХрдИ рдкрд░рддреЛрдВ рдХреЛ <tr> рдХреА рдХрдИ рдкрд░рддреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдирд╛ рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЬрд┐рд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдореИрдВрдиреЗ рдмреБрд▓рд╛рдпрд╛ рдерд╛, рд╡рд╣ рдПрдХ рдШрдЯрдХ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ <head> рд░реЗрдВрдбрд░рд░ рдмрдирдиреЗ рдХреЗ рдмрд┐рдирд╛ <link> рдФрд░ <script> рддрддреНрд╡ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдиреЛрдЯ рдЬреЛрдбрд╝рд╛ред рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдкрдврд╝реЗрдВред https://github.com/facebook/react/issues/2127#issue -4166809

рдЯрдХреНрдХрд░ ... рдореБрдЭреЗ рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл рдЗрд╕рдХреА рдмрдбрд╝реА рдЬрд░реВрд░рдд рд╣реИред <head> рдЕрдиреБрднрд╛рдЧ рдХреЗ рдХрд╛рд░рдг, рдЕрдВрд╢реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреВрд░реНрдг рд╡реЗрдм рдкреГрд╖реНрдареЛрдВ (рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реИред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдорд┐рд╢реНрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдЕрдВрддрд┐рдо рд░реЗрдВрдбрд░ рдореЗрдВ рдереЛрдбрд╝рд╛ рддрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдерд╛ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

@impinball рдЖрдк рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рд╢реАрд░реНрд╖рдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ -рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдореЗрдЯрд╛ рдЯреИрдЧ, рд╣реЗрдбрд░, рд╢реАрд░реНрд╖рдХ рдФрд░ рдХрднреА-рдХрднреА рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдЗрд╕ рд╕рдордп рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ? рдореБрдЭреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП {getBunchOfComponents()} рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдирд╣реАрдВред

@jonchay рдЖрдк рдПрдХ рдШрдЯрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред

function statelessWrapper(props) {
   return props.children;
}

рдФрд░ рдлрд┐рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

render() {
   return (  
      <statelessWrapper>
         {renderABunchOfComponents()}
      </statelessWrapper>
    );
}

@whatknight рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ return renderABunchOfComponents(); рдкрд╣рд▓реЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

  render () {
    let user = this.state.user
    let profile = user.get('data')
    let view = null

    if (user.get('status') === 'fetched') {
      view = (
        <h1>{profile.get('login')}</h1>
        <img src={profile.get('avatar_url')} />
        <dl>
          <dt>email</dt>
          <dd>{profile.get('email')}</dd>
        </dl>
      )
    } else if (user.get('status') === 'fetching') {
      view = <h1>fetching</h1>
    } else if (user.get('status') === 'error') {
      view = <h1>{profile.message}</h1>
    }

    return (
      <div className={className}>
        {view}
      </div>
    )
  }

рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рдФрд░ "рдЕрд╕реЗрдВрдмрд▓реА" рдХрд░рддреЗ рд╕рдордп рдХрдо рд╕реЗ рдХрдо рдХрдИ рдЯреБрдХрдбрд╝реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг img рдФрд░ h1 рдХреЗ рдЕрдбрд┐рдЧ рд╣реЛрдиреЗ рдХреА рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╡реИрд╕реЗ рднреА рдореБрдЦреНрдп рдЖрд╡рд░рдг рдХреЗ рдЕрдВрджрд░ рд╣реА рд░рд╣реЗрдВрдЧреЗред рдпрд╣ рдПрдХ рдЖрд╡рд░рдг рддрддреНрд╡ рд╣реИ, рдХрд╛рд╢ рдореИрдВ рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рддрд╛ред

@kilianc рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдмрд╕ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ

      view = [
        <h1 key={0}>{profile.get('login')}</h1>,
        <img key={1} src={profile.get('avatar_url')} />,
        <dl key={2}>
          <dt>email</dt>
          <dd>{profile.get('email')}</dd>
        </dl>,
      ]

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдЧрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рддреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝реЗрдЧрд╛ред

рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рдмрддрд╛рдП рдЧрдП рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП https://github.com/mwiencek/react/tree/frag-component рдкрд░ <frag></frag> рдХрдВрдЯреЗрдирд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╡реЛрдВ рдХреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@mwiencek рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдЕрджреНрдпрддрди рдореЗрдВ рдмрджрд▓рддреА рд╣реИ (_nestedChildCount рдХреЗрд╡рд▓ рдорд╛рдЙрдВрдЯрдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рд╕реЗрдЯ рд╣реИ)? рдпрд╣ рд╕рдм рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рд╕реА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдЪреНрдЫреА рд╢реБрд░реБрдЖрдд рдХреА рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдордЬрдмреВрдд рддрд░реАрдХрд╛ рдирд┐рдХрд╛рд▓рд╛ рд╣реЛред рдЕрдЧрд░ рдореБрдЭреЗ рд╕рдлрд▓рддрд╛ рдорд┐рд▓рддреА рд╣реИ рддреЛ рдореИрдВ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реВрдВрдЧрд╛ред

@spicyj рд╣рд╛рдБ, рддреБрдо рд╕рд╣реА рд╣реЛ, рдореБрдЭреЗ рдЙрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ...

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

@spicyj createFragment рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреНрдпрд╛ JSX рдЙрд╕рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ? рдпрд╛ рдХреНрдпрд╛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЯреБрдХрдбрд╝реЗ рддрддреНрд╡ рд╣реЛрдВ?

@syranide рдХреА рдЖрдЦрд┐рд░реА рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд "рдлреНрд░реИрдЧрдореЗрдВрдЯ рдПрдкреАрдЖрдИ" рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рд░реЗрдВрдбрд░ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгреА рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред JSX рдХрдИ рд░реВрдЯ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдФрд░ рд╕реАрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдХреА рд╕реАрдорд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдХрдо рд╕реЗ рдХрдо babel-plugin-transform-react-jsx (рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди) рдФрд░ babel-plugin-syntax-jsx (рдЖрд╕рдиреНрди рдореВрд▓ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИ) рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред рдкреВрд░реНрд╡ рдХреЛ рдмрджрд▓рдирд╛ рдХрд╛рдлреА рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рдмрд╛рдж рдХреЗ рджрд╛рдпрд░реЗ/рдЙрдкрдпреЛрдЧ рдФрд░ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╡рд╣ рдЕрднреА рднреА рдХрдИ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╢рд░реНрдд рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдПрдХ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдорд╛рдзрд╛рди рдЙрдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП "рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдордирдорд╛рдирд╛ key={...} рдЬреЛрдбрд╝реЗрдВ" рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ред

@dantman . рд╕реЗ рд╕рд╣рдордд рд╣реВрдБ

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

рд╕рд╢рд░реНрдд рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдореЗрдВ рднреА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк JSX-Control-Statements рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ред

рдЕрджреНрдпрддрдиреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ @spicyj рдиреЗ #5753 рдХреЗ рд▓рд┐рдП рд╕реЛрдЪрд╛ рд╕рдорд╛рдзрд╛рди рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рд╕рд╛рдордЧреНрд░реА рдХреЛ <!-- react-frag: 1 --><!-- /react-frag: 1 --> рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рд▓рдкреЗрдЯрдирд╛)ред рд╣рд╛рдБ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдереЛрдбрд╝реА рдмрджрд╕реВрд░рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ _nestedChildCount ред рд╡рд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдм https://github.com/mwiencek/react/tree/frag-component рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

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

<GridLayout
  columns = { 3 }
>
  <FadeAnimator
    springConfig = { springConfig }
  >
    { ...cells }
  </FadeAnimator>
</GridLayout>

рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЖрдЙрдЯ, рдпрд╛ рдПрдХ рдЕрд▓рдЧ рдПрдиреАрдореЗрд╢рди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдПред GridLayout рдмрдЪреНрдЪреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ред FadeAnimator рдЙрд╕ рд╕реВрдЪреА рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛, рдЙрдкрдпреБрдХреНрдд рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░/рдпрд╛ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛, рдФрд░ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GridLayout рдХреЗ рд▓рд┐рдП рдирдИ рд╕реВрдЪреА рд▓реМрдЯрд╛рдПрдЧрд╛ред FadeAnimator рдХреЛ рдЧреНрд░рд┐рдб рдмрд┐рдЫрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рддрддреНрд╡ рд░реЗрдВрдбрд░ рд╕реЗ Arrays рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧреНрд░рд┐рдб рдХреЛ рдЪрд┐рдирд╛рдИ рд╡рд╛рд▓реЗ рд▓реЗрдЖрдЙрдЯ рд╕реЗ рдмрджрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ FadeAnimator рдХреЛ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

<FadeAnimator
  wrapper = {
    <GridLayout
      columns = { 3 }
    />
  }
  springConfig = { springConfig }
>
  { ...cells }
</FadeAnimator>

// FadeAnimator
render() {
  return React.cloneElement(
    props.wrapper,
    null,
    props.children
  );
}

рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдХреЛ рдХрдо рд╕реНрдкрд╖реНрдЯ, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИред

рд░реЗрдВрдбрд░ рд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝рд╛ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВя╝Б
рд░реЗрдВрдбрд░ рд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝рд╛ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВя╝Б
рд░реЗрдВрдбрд░ рд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝рд╛ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВя╝Б
рд░реЗрдВрдбрд░ рд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝рд╛ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВя╝Б
рд░реЗрдВрдбрд░ рд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝рд╛ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВя╝Б
рд░реЗрдВрдбрд░ рд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝рд╛ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВя╝Б
рд░реЗрдВрдбрд░ рд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝рд╛ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВя╝Б
рд░реЗрдВрдбрд░ рд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝рд╛ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝реЗрдВя╝Б

@texttechne рд╕реБрдЭрд╛рд╡ рдмреЗрд╣рддрд░ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдкреАрдЖрдИ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЗрдВрдбрд░ рдореЗрдВ рдХрдИ рдореВрд▓ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрдВрдбрд░ рдореЗрдВ рдХрдИ рд░реВрдЯ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ: https://github.com/facebook/react/blob/master/src/renderers/shared/reconciler/ReactCompositeComponent.js#L1089

рдЖрдкрдХреЗ рдкрд╛рд╕ рддрддреНрд╡ рдХреЗ рдмрдЬрд╛рдп рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реЛрдЧреАред
рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЕрдм рдЖрдкрдХреЛ рдХрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддрддреНрд╡реЛрдВ рдХреЛ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: https://github.com/facebook/react/blob/master/src/renderers/shared/reconciler/ReactCompositeComponent.js# рдПрд▓471

рдлрд┐рд░, рдХрдИ рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рддрддреНрд╡реЛрдВ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ: https://github.com/facebook/react/blob/master/src/renderers/shared/reconciler/ReactCompositeComponent.js#L471

рдФрд░ рдЕрдЪреНрдЫреЗ рдХреНрд░рдо рдореЗрдВ рдЙрддреНрдкрд╛рджрд┐рдд рд╕рднреА рдорд╛рд░реНрдХрдЕрдк рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░реЗрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдорд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рд╕реБрд▓рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рд╣рдо рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рддрддреНрд╡реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЪреАрдиреА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЬрдбрд╝реЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рдЕрдирдорд╛рдЙрдВрдЯ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЖрдк рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ? рдЖрдк рдЕрдкрдбреЗрдЯ рдХреЛ рдареАрдХ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ?
рдпрд╛, рдЖрдк DevTools рдХреЗ рдЕрдВрджрд░ рдХрдИ рдЬрдбрд╝реЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ? (рд╕реНрдкрд╖реНрдЯ рдЙрддреНрддрд░: DevTools рдХреЛ рдареАрдХ рдХрд░реЗрдВ...)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдПрдХ рд╕рдордЧреНрд░ рдШрдЯрдХ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдВрддрд░ рдХрд╣рд╛рдБ рд╣реИ?
рдпрджрд┐ рд╣рдо рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд░рд┐рдПрдХреНрдЯ рдЖрдВрддрд░рд┐рдХ "рдкреНрд░рд╛рдЪреАрди" рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреАрдиреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ?

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рд╕рдмрдЯреНрд░реА рдкреНрд░рд╢реНрди (renderSubtreeIntoContainer) рдХреЗ рдЖрд╕рдкрд╛рд╕ рд░рд┐рдПрдХреНрдЯ рдЗрдВрдЯрд░реНрдирд▓ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЬрдм рдЖрдк рдПрдХ рдирдП рд╕рдмрдЯреНрд░реА рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдирдпрд╛ рд░реВрдЯ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдПрдХ рдкреЗрдбрд╝ рдХреЗ рд╕реНрддрд░ рдкрд░ рдХрдИ рдЬрдбрд╝реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рд╣рдо рд╣рд░ рдмрд╛рд░ рдирдИ рдЬрдбрд╝реЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ:

<p>Hi</p>
<p>There</p>

рдкрд░рд┐рдгрд╛рдо рджреЛ "рдПрдХ рдирдП рд░реВрдЯ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ" рдХреЙрд▓ рдореЗрдВ рд╣реЛрдВрдЧреЗред

рдПрдХ рдХреЙрд▓ рдХреЗ рдмрдЬрд╛рдп рдЕрдЧрд░ рд╣рдо рдПрдХ рд░реИрдкрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ, рд╣реИ рдирд╛? рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рд╕рд╛рджрдЧреА? рд╕рдЪ рдХрд╣реВрдВ рддреЛ, рдореЗрд░реА рднрд╛рд╡рдирд╛ рд╣реИ: рд╣рдореЗрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдЗрдВрдЯрд░реНрдирд▓ рдХреЛ рдирд╣реАрдВ рдЫреВрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд▓реНрдХрд┐, рдХреНрдпрд╛ рд╣рдо JSX рдХреЗ рд╕рд╛рде рдЗрд╕ рдЙрдкрд▓рдмреНрдзрд┐ рдХреЛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣рдо JSX рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

(_рдЕрд╕реНрд╡реАрдХрд░рдг_: рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреНрдпрд╕реНрдд рдирд╣реАрдВ рд╣реВрдВ, рдФрд░ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдпрд╛ рдЬреЛ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ред рдЧрд▓рддрдлрд╣рдореА рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред)

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛/рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ред рд╕рд╛рде рд╣реА, рдЧрд┐рдЯрд╣рдм рд░рд╣рд╕реНрдпрдордп рддрд░реАрдХреЗ рд╕реЗ рдИрдореЗрд▓ рдХреЛ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреЛрдб рдмреНрд▓реЙрдХ рдХреЛ рджреЛрдмрд╛рд░рд╛ рд╕реБрдзрд╛рд░рдирд╛ рдкрдбрд╝рд╛ ... :-(

рдирдорд╕реНрддреЗ, рдХреЛрд░ рдорд┐рдереНрд░рд┐рд▓ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ / рдХрдорд┐рдЯрд░ рдпрд╣рд╛рдБред

рдЯреАрдПрд▓; рдбреАрдЖрд░: рдПрдкреАрдЖрдИ рдФрд░ рдЗрдВрдЯрд░реНрдирд▓ рд╣реЛрдиреЗ рдкрд░ рднреА рдЯреБрдХрдбрд╝реЗ рдмреЗрд╣рдж рдХрдард┐рди рд╣реЛрддреЗ рд╣реИрдВ
рд╕рд░рд▓ред

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

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

рдпрд╣рд╛рдБ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдкрдХрдбрд╝ рд╣реИ: рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдареАрдХ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХреА
document.createContextualFragment рдмреЗрдХрд╛рд░ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЗрдП
рджреЛ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдмрджрд▓рдирд╛, рдЫреЛрдбрд╝реЗ рдЧрдП рдкреНрд░рддрд┐рдкрд╛рджрди:

// Before
A {}
fragment {
┬а┬аB[class="foo"] {}
┬а┬аB[class="bar"] {}
}
C {}
D {}

// After
A {}
B[class="foo"] {}
fragment {
┬а┬аC {}
}
D {}

рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкрд░рд┐рд╡рд░реНрддрди B рддрддреНрд╡реЛрдВ рдФрд░ C $ рддрддреНрд╡реЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд╛рдХреА рдХреЛ рдЕрдЫреВрддрд╛ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЧреИрд░-рддреБрдЪреНрдЫ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЗрд╕ рддрдереНрдп рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддреЗ рд╣реБрдП рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡реЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд╣реИрдВред

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

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

рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрдард┐рди рд╣реИ рдФрд░ рдЕрднреА рднреА рдпрд╣ рд╣рдорд╛рд░реА рдЯреВ-рдбреВ рд╕реВрдЪреА рдореЗрдВ рд╣реИред (рдЙрддреНрд╕рд╛рд╣ рд╕реЗ рдкреВрдЫрдиреЗ рд╕реЗ рдпрд╣ рдЬрд▓реНрджреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ @janryWangред)

@isiahmeadows FYI рдХрд░реЗрдВ, рдорд┐рдереНрд░рд┐рд▓ рдХреА рдкреБрдирд░реНрд▓реЗрдЦрди рд╢рд╛рдЦрд╛ рдЕрдВрд╢реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред

@spicyj рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ [1] [2] рдФрд░ рдкрд░реАрдХреНрд╖рдг [1] [2] рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рдВрдкреВрд░реНрдг рдЕрдВрддрд░ рдЗрдВрдЬрди рдХреЗрд╡рд▓ 400 LOC рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@isiahmeadows рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ GitHub рдиреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЦрд╛ рд▓рд┐рдпрд╛ред рдХреЛрдб рдмреНрд▓реЙрдХ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдореИрдВ <D /> рдХрд╛ рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдИ-рдореЗрд▓ рдореЗрдВ рдареАрдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЧрд┐рдЯрд╣рдм рдореЗрдВ рдПрдХ рдмрдЧ рдорд┐рд▓рд╛?

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

рдореИрдВрдиреЗ рдореВрд▓ рдИ-рдореЗрд▓ рдХреЛ support@github рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдЙрдореНрдореАрдж рд╣реИ, рд╡реЗ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ

@lhorie рдЖрдк рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдгреА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ DocumentFragment рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд╝рд┐рд▓ рд╣реИ?

рдФрд░ рдПрдХ "рдЫрджреНрдо" рд░реИрдкрд░ рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреИрд╕реЗ HTML рдЯрд┐рдкреНрдкрдгреА рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ? рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдиреЛрдбреНрд╕ "рд╣рд▓" рдереЗ ...

рдЙрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @spicyj

рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @isiahmeadows рдиреЗ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд▓рд╛рдпрд╛: рдирдпрд╛ рдорд┐рдереНрд░рд┐рд▓ рдЗрдВрдЬрди _not_ рдЙрд╕ рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ @isiahmeadows рдиреЗ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╕реБрдЭрд╛рдпрд╛ рд╣реИ:

  • рдЙрди рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ _рдорд╣рддреНрд╡рдкреВрд░реНрдг_ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛
  • рдпрд╣ рдЪрд╛рдмрд┐рдпреЛрдВ рдФрд░ рдХреБрдВрдЬреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдШрдЯрдХреЛрдВ рд╕реЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рднрд╛рдИ рдФрд░ рдЙрдкрдЪрд╛рдЗрд▓реНрдб рдШрдЯрдХреЛрдВ рдореЗрдВ рднреА рдЦреВрди рдмрд╣рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  • рдпрд╣ рдЦрдВрдб рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЛ рдЧреИрд░-рд╕рд╣рдЬ рдмрдирд╛ рджреЗрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, B.bar рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реА рдЯреБрдХрдбрд╝рд╛ рд╣реИ, рдФрд░ рд╕реА рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЯреБрдХрдбрд╝рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬреАрд╡рдирдЪрдХреНрд░ "рдХреИрд╕реНрдХреЗрдб" рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдм рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреИрд░реЗрдВрдЯ рдиреЛрдб рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдПрдХ рдЪрд╛рдЗрд▓реНрдб рдиреЛрдб рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдмрд┐рдВрджреБ рдХреА рддрд░рд╣, рдЗрд╕рдореЗрдВ рдПрдХ рдШрдЯрдХ рдХреА рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рд░рд┐рд╕рд╛рд╡ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
  • рдпрджрд┐, рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ, рдХреЛрдИ рдПрдХ рднрд┐рдиреНрди рдЗрдВрдЬрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реИ рдЬреЛ рдЙрди рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд╕реНрдкреЗрд╕ рд╕рдорд╛рдзрд╛рди рдЙрддрдирд╛ рд╣реА рддреБрдЪреНрдЫ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдЖрдкрддреНрддрд┐рдЬрдирдХ рдиреЛрдб рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд▓рдкреЗрдЯрдирд╛ред

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

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рддрдп рдХреА рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рдЧрд▓рддрд┐рдпрд╛рдБ рдХреА рд╣реИрдВ, рдФрд░ рдЧрд┐рдЯрд╣рдм рдИрдореЗрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ... :frowning:

@Primajin рдореИрдВрдиреЗ рдпрд╣ рднреА рд╕реЛрдЪрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд░рдЪрдирд╛ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ ( рдКрдкрд░ рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрдИ рдмрд╛рд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

рд╢рд╛рдпрдж, React.Children.map рдХреЛ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдмрдЪреНрдЪреЗ (рдмрд╛рд▓ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдмрдЪреНрдЪреЛрдВ рд╕рд╣рд┐рдд) рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ Children.map рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдПрдХ рдЕрдкрд╛рд░рджрд░реНрд╢реА рдмреЙрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕реАрдзреЗ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рдмрдЪреНрдЪреЛрдВ рдХреЛ рдПрдХ {рд╕рд░рдгреА, рддрддреНрд╡} рдХреЗ рд░реВрдк рдореЗрдВред

@lhorie рдореИрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдореИрдВ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдПрдХ рдлрд╛рдЗрдирд▓ рд╣реИ рдФрд░ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рддреАрди рд╣реИ, рд╕рд╛рде рд╣реА рдореИрдВ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореЗрд░реЗ рдХреЙрд▓реЗрдЬ рдХреЛ рдЗрдВрдЯрд░реНрдирд╢рд┐рдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░рд╛ рдзреНрдпрд╛рди Techtonic рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдкрд░ рднреА рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ _рд▓рдЧрднрдЧ_ CLI рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ (рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

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

@appsforartists

рд╢рд╛рдпрдж, React.Children.map рдХреЛ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдорд┐рдереНрд░рд┐рд▓ рд╕реНрдерд┐рд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА рдЙрдк-рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд╕рдорддрд▓ рдХрд░рдирд╛), рд▓реЗрдХрд┐рди рдореИрдВ рдЙрд╕ рдореЙрдбрд▓ рд╕реЗ рдкреВрд░реНрдг рдХрд╛рд░рдгреЛрдВ рд╕реЗ рджреВрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ (рдФрд░ рдХреБрдЫ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕рд┐рд░рджрд░реНрдж рдХреЗ рдХрд╛рд░рдг vnode рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдорд┐рд╢реНрд░рд┐рдд рдХреБрдВрдЬреА рдФрд░ рдЧреИрд░-рдХреБрдВрдЬреА рд╡рд╛рд▓реЗ рдиреЛрдбреНрд╕ рд╣реИрдВ)ред рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрд╛рдд рд╣реЛ рд╕рдХрддреА рд╣реИред

рдФрд░ рдПрдХ "рдЫрджреНрдо" рд░реИрдкрд░ рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреИрд╕реЗ HTML рдЯрд┐рдкреНрдкрдгреА рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ? рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдиреЛрдбреНрд╕ "рд╣рд▓" рдереЗ ...

рд╣рдо рдХреБрдЫ рдорд╣реАрдиреЛрдВ рд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ https://github.com/mwiencek/react-packages рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдЖрд╡рд░рдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@mwiencek рдХрд╕реНрдЯрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреИрдХреЗрдЬ рдХреЗ рдмрд┐рдирд╛ рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

@mwiencek рдХреНрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рд░реИрдкрд░ рднреА рдЬрд░реВрд░реА рд╣реИрдВ? рдореИрдВ рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ рдЪрддреБрд░ рдЪреАрдЬреЛрдВ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛, рдпрджрд┐ рдЖрдк рдПрдХ рдЯреБрдХрдбрд╝реЗ рд╕реЗ рдПрдХ рддрддреНрд╡ рдХреЛ рдПрдХ рднрд╛рдИ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдпрд╛ рдореВрд▓ рддрддреНрд╡ рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рдЕрдЧрд░ рдЖрдк рдХреНрд░рдо рдореЗрдВ vdom рдкреЗрдбрд╝ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЖрдк рдХрд░рддреЗ рд╣реИрдВ?

рд╡реИрд╕реЗ рднреА, рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореИрдВ

рд╕рдЦреНрддреА рд╕реЗ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рджрд┐рдпрд╛ред

рддреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЙрдЪрд┐рдд рд╡рд┐рд╡рд░рдг рд╕реВрдЪреА <dl> рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ?

<dl>
  <dt>Def 1</dt>
  <dd>Some description</dd>
  <dt>Def 2</dt>
  <dd>Some other description</dd>
</dl>

@KaiStapel рдпрд╣ рдореБрджреНрджрд╛ render() рд╕реЗ рдХрдИ рдШрдЯрдХреЛрдВ (рдпрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддрддреНрд╡реЛрдВ) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЬрдм рддрдХ рдЖрдкрдХрд╛ render рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдПрдХ рдореВрд▓ рддрддреНрд╡/рдШрдЯрдХ рджреЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдареАрдХ:

render() {
  return (
    <dl>
      <dt>Def 1</dt>
      <dd>Some description</dd>
      <dt>Def 2</dt>
      <dd>Some other description</dd>
    </dl>
  )
}

рдареАрдХ рдирд╣реАрдВ рд╣реИ:

render() {
  return (
    <h2>my list</h2>
    <dl>
      <dt>Def 1</dt>
      <dd>Some description</dd>
      <dt>Def 2</dt>
      <dd>Some other description</dd>
    </dl>
  )
}

@GGAlanSmithee рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣рд╛рдБ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ:

<dl>
   loop here and print out dt/dd pairs
</dl>

рдЬреЛ рдмрд╣реБрдд рджреБрдЦрдж рд╣реИред рд╡рд╣реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рдмрд╛рд░ рдореЗрдВ рджреЛ <tr> рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :(

рдКрдкрд░ рд╕реЗ:

"рдореИрдВ рднреА" рдФрд░ "+1" рдореВрд▓реНрдпрд╡рд╛рди рдирд╣реАрдВ рд╣реИрдВ, рди рд╣реА рдРрд╕реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╣реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк <tr> рдпрд╛ <dd> рддрддреНрд╡реЛрдВ рдХреЛ <div> рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ) .

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ https://github.com/mwiencek/react-packages рдореЗрдВ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рд╕рдорд╛рдзрд╛рди рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд▓реНрдж рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛? рдпрд╛ рд╣рдо рдирдП рд╕реБрд▓рд╣рдХрд░реНрддрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ https://github.com/mwiencek/react-packages рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ

рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@mwiencek

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╡реЛрдВ рдХреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЬрд╝рд░реВрд░, рдХреГрдкрдпрд╛ рдПрдХ рдЬрдирд╕рдВрдкрд░реНрдХ рднреЗрдЬреЗрдВ!

рдкреАрдЖрд░ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдореИрдВрдиреЗ @spicyj рд╕реЗ рд╕реБрдирд╛ рдХрд┐ рд╡реЗ рдирдП рдХреЛрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдФрд░ рдЙрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рдЯрд┐рдкреНрдкрдгреА рдиреЛрдбреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВред рдореИрдВ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрди рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИред рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЗрд╕ рджреМрд░рд╛рди рд▓реЛрдЧреЛрдВ рдХреЛ рдкреИрдХреЗрдЬ рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗред

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

@gaearon рдХреНрдпрд╛ рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд╣рд╛рдпрдХ рдЯреБрдХрдбрд╝реЗ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдЪреАрдиреА рд╣реИ, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЫреЛрдЯреЗ рдЖрд╡рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ <frag> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдХрдИ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдШрдЯрдХ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ?

@syranide рдореИрдВ рдмреАрдЯрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдлреНрд░реИрдЧ рдХреЗ рд╕рд╛рде рдХрд╕реНрдЯрдо рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдПрдХреНрдЯ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ <frag> рд░реИрдкрд░ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? :) рдзрдиреНрдпрд╡рд╛рдж

@amertak

import React from 'react';
import createFragment from 'react-addons-create-fragment';

let nativeCreateElement = React.createElement;

React.createElement = function() {
  if (arguments[0] !== 'frag') {
    return nativeCreateElement.apply(this, arguments);
  }

  let length = arguments.length;
  if (length <= 2) {
    return null;
  }

  let children = {};
  for (let i = 2; i < length; i++) {
    children['~' + (i - 2)] = arguments[i];
  }

  return createFragment(children);
};

рдкрд┐рдЫрд▓реА рдЯреАрдо рдореАрдЯрд┐рдВрдЧ рдореЗрдВ рд╣рдордиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдмрд╛рдд рдХреА рдереАред рдЖрдо рд╕рд╣рдорддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдлреАрдЪрд░ рдХреЛ рд▓реЙрдиреНрдЧ рдЯрд░реНрдо рдХреЛрд░ рд░реАрд░рд╛рдЗрдЯ рдореЗрдВ рд╕рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЕрднреА рдЗрд╕ рдкрд░ рдХреЛрдИ рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реИ)ред

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

рд╣рдо рдХрд┐рд╕ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рд╣рдорд╛рд░реЗ рдореАрдЯрд┐рдВрдЧ рдиреЛрдЯреНрд╕ рд░реЗрдкреЛ рджреЗрдЦреЗрдВ! рдЖрдк рдЗрд╕ рдкрд░ рд╣рдорд╛рд░реА рдирд╡реАрдирддрдо рдЪрд░реНрдЪрд╛ https://github.com/reactjs/core-notes/blob/master/2016-07/july-07.md рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

@gaearon рдХрдо рд╕реЗ рдХрдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдлреНрд░реИрдЧ-рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реЛрдиреЗ рдкрд░ рдХрд░реНрд╖рдг рдХреЗ рд╕рд╛рде рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред

@syranide рдХреЛрдб рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд░реВрдЯ рдРрдк рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ frag рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ ReactDOM.render рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд░реЗрдВрдбрд░рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╡рд┐рдзрд┐ рдЦрдВрдб рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧреА .

рд╡реИрд╕реЗ рднреА рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдРрдк рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ frag рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@amertak рд╣рд╛рдБ рдпрд╣ рдХреЗрд╡рд▓ рдЯреБрдХрдбрд╝реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдпрд╣ рдХреЛрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

@syranide
рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд▓рд╛рдЬ рдПрдХ рдЕрдиреНрдп рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ (рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)?
рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ #comment рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╢рд╛рдпрдж рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ
React.createComponent('#comment', { ... }, children) ?
рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЫреЛрдЯрд╛ рдЙрдкрд╛рдпред

рдпрд╣рд╛рдБ рдЬреЛ рдореБрдЦреНрдп рдЪреАрдЬрд╝ рдЧрд╛рдпрдм рд╣реИ рд╡рд╣ рд╣реИ comment рдиреЛрдб рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛, рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд╣реВрдБ? :)

@gaearon рдереЛрдбрд╝рд╛ рджреБрдЦреА рд╣реИ рдХрд┐ рдпрд╣ рдЬрд▓реНрдж рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдЪреНрдЫрд╛ рд▓рд┐рдЦреЛ!

рдПрдХ рдЕрджреНрдпрддрди рддрдХ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди?
рдореЗрд░реЗ рд▓рд┐рдП, рдореБрдЭреЗ Botstraap . рдХрд╛ рдПрдХ рдбреНрд░реЙрдкрдбрд╛рдЙрдирдореЗрдиреВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛

render(){
    return (
        <ButtonNotification/>
        <ul className="dropdown-menu">
            {this.state.items.map(this.addItem)}
        </ul>
    );
}
ReactDOM.render(
    React.createElement(NotificationHandler, null),
    document.getElementById("listNotification")
);

рд▓реЗрдХрд┐рди рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╡рд┐рдЪрд╛рд░?
рдзрдиреНрдпрд╡рд╛рдж,

http://getbootstrap.com/components/#btn -dropdowns-single

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ <div class="btn-group"> рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЧрдпрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдбреЙрдХреНрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ

рд╣рд╛рдВ рдмрд┐рд▓реНрдХреБрд▓, рд▓реЗрдХрд┐рди <div class="btn-group"> рдореЗрдВ рд▓рд┐рдкрдЯреЗ рджреЛ рддрддреНрд╡ рд╣реИрдВред

render(){
    return (
        <ButtonNotification/> //ELEMENT 1
        <ul className="dropdown-menu"> //ELEMENT 2
            {this.state.items.map(this.addItem)}
        </ul>
    );
}
ReactDOM.render(
    React.createElement(NotificationHandler, null),
    document.getElementById("listNotification") //is DIV#listNotification
);
<div id="listNotification" class="btn-group"><!--wrap-->
    <a href="#">button notification</a> <!--ELEMENT1-->
    <ul> <!--ELEMENT2-->
        <li></li>
        <li></li>
    </ul>
</div>

рдФрд░ рдПрдХ рддрддреНрд╡ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рджреЛ рддрддреНрд╡ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ,
рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @Primajin

рдмрд╕ рд╕рдм рдХреБрдЫ рдПрдХ рд╕реНрддрд░ рдкрд░ рд╢рд┐рдлреНрдЯ рдХрд░реЗрдВ:

render(){
    return (
        <div className="btn-group"> //WRAP
            <ButtonNotification/> //ELEMENT 1
            <ul className="dropdown-menu"> //ELEMENT 2
                {this.state.items.map(this.addItem)}
            </ul>
        </div>
    );
}
ReactDOM.render(
    React.createElement(NotificationHandler, null),
    document.getElementById("listWrapper") //or whatever your list is called
);

рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рдЕрдиреНрдп рдЖрдЗрдЯрдо рд╣реИрдВред
рдпрд╣ рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд░ рдХрд░реЗрдЧрд╛ред

<div ...> <--!listWrapper-->
    <div class="btn-group">....</>
    <div class="btn-group">....</>
    <--!React-->
    <div class="btn-group"> //WRAP
        <ButtonNotification/> //ELEMENT 1
        <ul className="dropdown-menu"> //ELEMENT 2
            {this.state.items.map(this.addItem)}
        </ul>
    </div>
    <--!React-->
    <div class="btn-group">....</>
</div>

рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рд╕рднреА рдирд┐рд╣рд┐рдд рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред
рдХреНрдпрд╛ рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ "рдРрдб" рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж,

@ rifton007 рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рднрд╛рдИ-рдмрд╣рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рддрддреНрд╡/рдШрдЯрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рдмрдВрдз рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдШрдЯрдХ return рдПрдХрд╛рдзрд┐рдХ рддрддреНрд╡ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрднреА рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдкреВрд░реЗ рдзрд╛рдЧреЗ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирдореНрд░ рд╣реИ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдПрдХ _new_ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдХреЗрд╡рд▓ рдЙрд╕реА рдореБрджреНрджреЗ рдХреЛ рджреЛрд╣рд░рд╛ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЬреНрдЮрд╛рдд рдкреНрд░рддрд┐рдмрдВрдз рд╣реИ, рдФрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд╡рд┐рд╡рд░рдг рдФрд░ рддрд░реНрдХ рдХреА рд╡рд┐рд╕реНрддреГрдд рдЪрд░реНрдЪрд╛ рд╣реИред рдбреИрди рдиреЗ рдпрд╣ рднреА рдХрд╣рд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдВрддрддрдГ рдЗрд╕ рд╕рдорд░реНрдерди рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВред рд╕реНрд╡реАрдХреГрдд рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдХреЗ рдЖрдк рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдмреАрдЪ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ рдпрд╛ рдирд╣реАрдВред
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЖрдк рдореЗрд░реА рдкреЛрд╕реНрдЯ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ 7 рдФрд░ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдРрдк рдмрдирд╛рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлреНрд░реЗрдорд╡рд░реНрдХ 7 рдПрдЪрдЯреАрдПрдордПрд▓ рдкреНрд░рд╛рд░реВрдк рддрдп рд╣реИ,

<div class="page"><div class="navbar"></div><div class="searchbar"></div><div class="page-content"></div><div class="toolbar"></div></div>

рдореИрдВ рдкреНрд░рдердо рд╕реНрддрд░ рдХреЗ рдмрд╛рд▓ рддрддреНрд╡реЛрдВ (рдиреЗрд╡рдмрд╛рд░, рд╕рд░реНрдЪрдмрд╛рд░) рдХреЛ рдЕрдиреНрдп div рдореЗрдВ рд▓рдкреЗрдЯ рдирд╣реАрдВ рд╕рдХрддрд╛, рдЬрд┐рд╕рдореЗрдВ 'рдкреГрд╖реНрда' рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИ

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдШрдЯрдХ рд╣реИ рдЬреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ

рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд HTML рдЯреИрдЧ рдореЗрдВ рд▓рдкреЗрдЯ рдирд╣реАрдВ рд╕рдХрддрд╛ (HTML5 рдорд╛рдирдХ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ - рдореБрдЭреЗ tbody рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рдЪрд╛рдЗрд▓реНрдб рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдИ рдЧрдИ рдХрдИ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рд╣реА tbody рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ) ) рдХреНрдпрд╛ @Prinzhorn рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рддрдХрдиреАрдХ - рдЙрди рдмрдЪреНрдЪреЛрдВ рдХреЛ HTML рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдореИрдВрдиреЗ рдПрдХ рдШрдЯрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬреЛ рдХреЗрд╡рд▓ HTML рдЯрд┐рдкреНрдкрдгреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

FYI рдХрд░реЗрдВ, рдЬрд┐рд╕ рдкреБрдирд░реНрд▓реЗрдЦрди рдкрд░ рд╣рдо рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ (#6170) рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдВрд╢реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╣рдорд╛рд░реА рдкреНрд░рдЧрддрд┐ рдХреЛ #7925 рдФрд░ http://isfiberreadyyet.com рдкрд░ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЗрд╡рд▓ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ <table> рддрддреНрд╡ рдХреБрдЫ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗрдм рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рд░рдг рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЖрд╣, рдЯреБрдХрдбрд╝реЗ! рдЙрдирдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВред

@trusktr

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рд╕реЗ рдиреЛрдЯ:

рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рд╣рдо рднреА рдпрд╣реА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рдореМрдЬреВрджрд╛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдард┐рди рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЗрдЪреНрдЫрд╛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╕рд╣рд╛рдпрдХ рдирд╣реАрдВ рд╣реИрдВред

рдореИрдВ

рдЧреЛрд╢ рдбрд╛рдВрдЧ, рдореБрдЭреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдКрдкрд░ рдЙрдард╛рдпрд╛ рд▓реЗрдХрд┐рди рдПрдХ рд╡реИрдз рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдорд╛рди рд▓реАрдЬрд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ 3 рдмрдЯрди рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдПрдХ рд╕реАрдПрд╕рдПрд╕ рддрд░рд▓ рд▓реЗрдЖрдЙрдЯ (рдмрд╛рдПрдВ, рдХреЗрдВрджреНрд░, рджрд╛рдПрдВ) рдЪрд╛рд╣рд┐рдПред рдмрд╛рдпрд╛рдВ рдмрдЯрди рд╣рдореЗрд╢рд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рджреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рджреГрд╢реНрдпрдорд╛рди рд╣реЛрддреЗ рд╣реИрдВред рд░рд┐рдПрдХреНрдЯ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡) рдореЗрдВ, рдореИрдВ рдЗрд╕рдХреЗ рдлреНрд▓реЗрдХреНрд╕рдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

[ Left ] { renderCenterAndRightButtons(this.state.someFlag) }

рдордзреНрдп рдФрд░ рджрд╛рдПрдБ рдмрдЯрди рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХрд╡рдЪрди рджреГрд╢реНрдп рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╣реИрдВред

рд╣рд╛рдВ, рдореИрдВ рдХреЗрдВрджреНрд░ рдФрд░ рджрд╛рдПрдВ рдмрдЯрди рдХреЛ рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛрдб рдкреЗрд╢ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдмрд╣реБрдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред

[ Left ] { renderCenterButton(this.state.someFlag) } { renderRightButton(this.state.someFlag) }

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред (рдлреНрд▓реЗрдХреНрд╕рдмреЙрдХреНрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдКрдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдзрд╛ рджрд░реНрдЬрди рд▓реЛрдЧ рд╣реИрдВред) рдЪреВрдВрдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдЪрд░реНрдЪрд╛ рдЙрддреНрдкрд╛рджрдХ рд╣реЛрдЧреА, рдореИрдВ рдЗрд╕реЗ рд▓реЙрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдорд╛рдЪрд╛рд░ рдорд┐рд▓рдиреЗ рдкрд░ рд╣рдо рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд░рд┐рдПрдХреНрдЯ 16 рдмреАрдЯрд╛ 1 рдХреЗ рдмрд╛рдж рд╕реЗ рдШрдЯрдХреЛрдВ рд╕реЗ рд╡рд╛рдкрд╕реА рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЕрднреА рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЕрднреА рднреА рдХреБрдЫ рд╕реАрдорд╛рдПрдБ рд╣реИрдВ (SSR рд╕рдорд░реНрдерди рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ) рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ #8854 рдореЗрдВ рдЯреНрд░реИрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрд┐рдо 16 рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдкрд╣рд▓реЗ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред

рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рдзрдиреНрдпрд╡рд╛рдж рджрд╛рдиреА

рдореИрдВ

рдореИрдВ

@gaearon рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╕реБрдзрд╛рд░! рдХреНрдпрд╛ рдпрд╣ рд╢реБрджреНрдз рдЯреЗрдХреНрд╕реНрдЯ рдиреЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ?

рд╣рд╛рдВ, рдпрд╣ рд▓реМрдЯрдиреЗ рд╡рд╛рд▓реЗ рддрд╛рд░реЛрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдореИрдВ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ 2 рдЖрд╕рдиреНрди XJS рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ return ["foo", "bar"] (рдХреБрдЫ рдФрд░ рдЙрдкрдпреЛрдЧреА;) рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд bundle.js:66656 Warning: Each child in an array or iterator should have a unique "key" prop. рдорд┐рд▓рддрд╛ рд╣реИ

рддреЛ рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдПрдХ рдмрд╛рд╣рд░реА рддрддреНрд╡ рджреНрд╡рд╛рд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реВрдЪреА рдХреЛ рдШреЗрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдерд╛?

рддреЛ рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдПрдХ рдмрд╛рд╣рд░реА рддрддреНрд╡ рджреНрд╡рд╛рд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реВрдЪреА рдХреЛ рдШреЗрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдерд╛?

рд╣рд╛рдВ, рдПрдХ рд░реЗрдВрдбрд░ рд╕реЗ рдХрдИ рддрддреНрд╡ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ред (рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдВрдХ рдкреЛрд╕реНрдЯ рджреЗрдЦреЗрдВред)

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

@diligiant рдХреА рд╡рд╛рдкрд╕реА ['foo', 'bar'] рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИред рдЖрдк return <div>{['foo','bar']}</div> рдХрднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрднреА рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрдЪреНрдЪреЗ рдХреЗ рдкрд╛рд╕ 'рдХреБрдВрдЬреА' рдкреНрд░реЛрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЪрд╛рд╣реЗ рд╡рд╣ <div> рдЬреИрд╕реЗ рдЖрдВрддрд░рд┐рдХ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдЯреИрдЧ рдореЗрдВ рд╣реЛ рдпрд╛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛред рдЕрдм рдЖрдк рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

return [<div key='1'>foo</div>, <span key='2'>bar</span>];

рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рд╕реАрдорд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ ['foo', 'bar'] рд▓реМрдЯрд╛рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдЙрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрди рддрд╛рд░реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рд╡реЗ рдЬреЗрдПрд╕рдПрдХреНрд╕ рдЯреИрдЧ рд╣реИрдВ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдЖрдк рдЙрдирдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░реЛрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рд╕рд░рдгреА рд▓реМрдЯрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред

@JesperTreetop рдзрдиреНрдпрд╡рд╛рджред
@sassanh , рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЖрд╕рдкрд╛рд╕ рдХреЗ (рдЕрд░реНрдерд╛рддреН) рдмреЗрдХрд╛рд░ <div> рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП "рдмрд╕" рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╢рд░реНрдореАрд▓реА" рд╣реВрдВред рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рджрдВрдб рдирд╣реАрдВ рд╣реИ? рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛!

@diligiant рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдкреНрд░рджрд░реНрд╢рди рджрдВрдб рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдмреЗрдХрд╛рд░ div рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЖрд╕рдкрд╛рд╕ рдХреЗ рддрд╛рд░ рди рд╣реЛ рдФрд░ рдпрджрд┐ рдпрд╣ рдЖрд╕рдкрд╛рд╕ рдХреЗ рддрд╛рд░ рд╣реИрдВ рддреЛ рдЖрдк рд╕рд░рдгреА рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддрд╛рд░реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рддрд╛рд░ рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдк рдШрдЯрдХ рдореЗрдВ рдХреБрдВрдЬреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рджреЛ рдШрдЯрдХ Foo рдФрд░ Bar рд╣реИрдВ рддреЛ рдЖрдк [<Foo key='foo'/>, <Bar key='bar'/>] рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рди рддреЛ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ (рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣) рдХреЛ рдШреЗрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рди рд╣реА рдЖрдкрдХреА рд╕рд░рдгреА (рдзрдиреНрдпрд╡рд╛рдж рдХреЗ рд▓рд┐рдП) рдпрд╣ рдирдИ рд░рд┐рд▓реАрдЬ, рдЖрдкрдХреЛ 16 рд╕реЗ рдкрд╣рд▓реЗ рд╕рд░рдгреА рдХреЛ рдШреЗрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ)ред

@sassanh рддрдм рд╢рд╛рдВрддред рдмреЗрд╢рдХ рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдерд╛ред рдкреНрд░рд╕рдиреНрди!! ;)

рдЕрд╕рд▓ рдореЗрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рд╕рднреА рдЖрдЗрдЯрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рд╣рдо рд▓рд╛рдкрддрд╛ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА рдХрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред рдХреНрдпрд╛ рдпрд╣ рдореМрдЬреВрджрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ 15 рдореЗрдВ рд╣реИ рдЬрдм рддрд╛рд░ рдПрдХ div рдХреЗ рдЕрдВрджрд░ рд╣реЛрддреЗ рд╣реИрдВ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдореЗрдВ рдЗрд╕реЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП 16 рдореЗрдВ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреБрдВрдЬреА рджреЗрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ)ред

@gaearon рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рднреНрд░рд╛рдордХ рдерд╛: рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛ рдШрдЯрдХред

рдореИрдВрдиреЗ рдЬрд╛рдБрдЪ рдХреА рдФрд░ -beta.5 рдХреЗ рддрд╣рдд, рдХрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╕рдордп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдлрд┐рд░ рднреА, рдореИрдВ key рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рд╣реИрд░рд╛рди рд╣реВрдВ рдЬрдм рдПрдХ рд╕рд░рдгреА рдХреЛ рдХреЗрд╡рд▓ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдШрдЯрдХ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ SO рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рд╢реНрди рдЙрдард╛рдПрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкреЗрд╢рдХрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ ...)

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред

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

.. рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдореИрдВ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛ рд░рд╣рд╛ рд╣реВрдВ , рдореБрдЭреЗ key рдЪреЗрддрд╛рд╡рдиреА рдЬрдЧрд╣ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдЕрд▓реНрдкрдордд рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред

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

рд╕реАрдзреЗ рд░реЗрдВрдбрд░ рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдПрдХ рдбрд┐рд╡ рдХреЗ рдЕрдВрджрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╡реИрдЪрд╛рд░рд┐рдХ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рддреЛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпреЛрдВ рд╣реЛрдЧреА рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдореЗрдВ рдирд╣реАрдВред рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЪрд╛рдмрд┐рдпрд╛рдВ рдЧреБрдо рд╣реЛрдиреЗ рдкрд░ рджреЛрдиреЛрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

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

рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде JSX рдореЗрдВ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

return (
  <>
    <div>child 1</div>
    <div>child 2</div>
  </>
);

рдпрд╣ рдПрдХ рд╕рд░рдгреА рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХрднреА рднреА рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред JSX рдЪрд╛рдЗрд▓реНрдб рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рджреА рдЧрдИ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдареАрдХ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп JSX рдХреЛрдб рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рджреВрд░ рдЬрд╛рдиреЗ рджреЗрддреА рд╣реИ рдЬрд╣рд╛рдБ рдПрдХ div рдореЗрдВ рдХрдИ рдмрдЪреНрдЪреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдпрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╣реИред рддреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЬреНрдЮрд╛рдд рд╕реАрдорд╛ рд╣реИред

@JesperTreetop рдФрд░ @zwily , @gaearon рдиреЗ рдЗрд╕реЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рддрд░реАрдХреЗ рд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрд╛рдпрд╛;)

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╕рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдлрд▓реЗ-рдлреВрд▓реЗ, рдореИрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд╣ рд░рд╣рд╛ рдерд╛ ...

@gaearon рдХреНрдпрд╛ <> рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдФрд░ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдЧреЗ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рдмрдЬрд╛рдп рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдЗрдзрд░-рдЙрдзрд░ рдЦреЛрдЬрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдИ рдирд╣реАрдВ рдорд┐рд▓рд╛ред

@smrq +1 рдкреНрд░рд╢реНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдореИрдВ рдЙрди рдЕрдЬреАрдм рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ (рдПрдХ-рд╕реЗ-рдПрдХ rendrer() рдкрд░рд┐рдгрд╛рдо, рдХреБрдВрдЬрд┐рдпрд╛рдБ рдФрд░ JSX рд╕рд┐рдВрдЯреИрдХреНрд╕ рдпрд╛ рдЯреБрдХрдбрд╝реЗ) рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХрдорд╛рддреНрд░ рдЯрд┐рдХрдЯ https://github.com/ рд╣реИ

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╛рдЗрдмрд░ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗ - рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзреВрд░рд╛ рд╕рдкрдирд╛ рд╣реИ

рдХреБрдВрдЬрд┐рдпрд╛рдБ рдПрдХ "рдореБрджреНрджрд╛" рдирд╣реАрдВ рд╣реИрдВред :) рд╡реЗ рдХрд┐рд╕реА рднреА рджреГрд╢реНрдп рдврд╛рдВрдЪреЗ рдХрд╛ рдПрдХ рдореМрд▓рд┐рдХ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдЧрддрд┐рд╢реАрд▓ рд╕реВрдЪрд┐рдпрд╛рдВ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП https://facebook.github.io/react/tutorial/tutorial.html#keys рджреЗрдЦреЗрдВред

@spicyj рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ ┬лрдореБрджреНрджрд╛┬╗ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдКрд░реНрдЬрд╛ рдЦрд░реНрдЪ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдФрд░ рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡реНрдпреВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдореМрд▓рд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/dfilatov/vidom)

рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡реНрдпреВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдореМрд▓рд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/dfilatov/vidom)

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

@ рдЧреЛрдЯреЛ-рдмрд╕-рд╕реНрдЯреЙрдк vidom рдЪрд╛рдмрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдкрдбреЗрдЯ рд╡рд╛рд▓реЗ рдмрдбрд╝реЗ рдорд╛рдорд▓реЗ рд╣реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ

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

рдмрд┐рдирд╛ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдШрд░реНрд╖ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ vidom рдХрд╛ @veged рдЙрджрд╛рд╣рд░рдг ред

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

рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рд╡рд░реНрдЪреБрдЕрд▓-рдбреЛрдо рд╕реНрдкреЗрд╕ рд╕реЗ рдХрд╛рдлреА рдкрд░рд┐рдЪрд┐рдд рд╣реИ [1]ред рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдБ:

  1. рд╕рдорд╛рди рднрд╛рдИ-рдмрд╣рдиреЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░реЗрдбрд┐рдХреНрдЯреЗрдмрд▓ рдбреЛрдо рдФрд░ рд╕реНрдЯреЗрдЯ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред
  2. рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рдкрд░реАрдд рд╣реЛрддреА рд╣реИрдВред

[1] https://github.com/leeoniya/domvm

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣рд╛рдБ рд╕реНрдкрд╖реНрдЯ рдореБрджреНрджрд╛ (рдЬреИрд╕рд╛ рдХрд┐ @gaearon рд╡рд░реНрдгрд┐рдд рд╣реИ) рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рд░ рдЙрдкрдпреЛрдЧ рд╣реИ рдФрд░ рд╕реНрдерд┐рд░ рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рд╕реНрдерд┐рд░ JSX рдЕрдВрд╢реЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рд╣реИ

@рдмреНрд░рд┐рдЧреИрдВрдб рдУ рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░рд╛рдЬреНрдп-рдкреВрд░реНрдг рдШрдЯрдХреЛрдВ рдХреЗ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ ;-) рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЛрдВ (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХ) рдХреЛ рдордЬрдмреВрд░ рдХрд░реЗрдВ ... рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рджрд┐рдЦрддрд╛ рд╣реИ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡реЗ рдХрд┐рд╕реА рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдиреАрдЪреЗ рдХреЗ рдШрдЯрдХ рд╕рднреА рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╣реИрдВ) рддреЛ рдЖрдкрдХреЛ рдпрд╛ рдЯреАрдо рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдХрдВрдкреЛрдиреЗрдВрдЯ (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рд╕рд╛рджрд╛ рдбреЛрдо рдЗрдирдкреБрдЯ) рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдиреАрдЪреЗ рдХреБрдЫ рд╕реНрддрд░ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВред рддрдм рддрдХ рдЖрдк рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЪрд╛рдмрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕реНрдерд┐рддрд┐ (рдпрд╛ рдЗрдирдкреБрдЯ рдорд╛рди) рдЧрд▓рдд рдЖрдЗрдЯрдо рд╕реЗ рд╕рдВрдмрджреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИред

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

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЬрдм рд╕реВрдЪреА рд╕реНрдерд┐рд░ рд╣реЛрддреА рд╣реИ рдФрд░ рдХрднреА рднреА рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рддреЛ рдХреБрдВрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред JSX рд░реЗрдкреЛ рдкрд░ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рд╡рд╣рд╛рдВ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

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

@smrq рдиреЗ jsx рд░реЗрдкреЛ рдкрд░ <> рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдореБрджреНрджрд╛ рдмрдирд╛рдпрд╛: https://github.com/facebook/jsx/issues/84ред

рд╣рдордиреЗ рдЕрднреА рдПрдХ рдирдП React.Fragment рдирд┐рд░реНрдпрд╛рдд рдФрд░ рд╕рдВрдмрджреНрдз <> рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ:
https://reactjs.org/blog/2017/11/28/react-v16.2.0-fragment-support.html

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

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

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

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

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

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

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