React: рдЗрд╕.context рдХреЗ рд╕рд╛рде shouldComponentUpdate рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП?

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

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ this.context рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ # 2509 рдХреЗ рд╕рд╛рде рдЖрдХрд╛рд░ рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ shouldComponentUpdate рдХреЛ context рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рдПрдХ рддреАрд╕рд░рд╛ рддрд░реНрдХ ( nextContext ) рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП PureRenderMixin рднреА рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реВрдВ:

  shouldComponentUpdate: function(nextProps, nextState, nextContext) {
    return !shallowEqual(this.props, nextProps) ||
           !shallowEqual(this.state, nextState) ||
           !shallowEqual(this.context, nextContext); // this will throw without context, read on
  }

рдШрдЯрдХ рд╣реИ рдХрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкреНрдЯ рдирд╣реАрдВ рд╣реИ this.context рдЫреЛрдбрд╝рддреЗ рд╣реБрдП рдирд╣реАрдВ рджреНрд╡рд╛рд░рд╛ contextTypes рдЗрд╕ рддреАрд╕рд░рд╛ рддрд░реНрдХ рд╣реИ, рдЬреЛ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ <Middle /> рдШрдЯрдХ <Top /> рд╕рдВрджрд░реНрдн рд╕реНрд╡рд╛рдореА рдФрд░ <Bottom /> рд╕рдВрджрд░реНрдн рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рдмреАрдЪ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ <Middle /> рдкреНрд░рддрд┐рдмрдВрдзрд╛рддреНрдордХ shouldComponentUpdate , рддреЛ <Bottom /> рд▓рд┐рдП рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ <Top /> рдХрд╛ рд╕рдВрджрд░реНрдн рдЕрджреНрдпрддрди рдмрд┐рд▓реНрдХреБрд▓:

( рдмреЗрд▓рд╛ )

var Bottom = React.createClass({
  contextTypes: {
    number: React.PropTypes.number.isRequired
  },

  render: function () {
    return <h1>{this.context.number}</h1>
  }
});

var Middle = React.createClass({
  shouldComponentUpdate: function (nextProps, nextState, nextContext) {
    return false;
  },

  render: function () {
    return <Bottom />;
  }
});

var Top = React.createClass({
  childContextTypes: {
    number: React.PropTypes.number.isRequired
  },

  getInitialState: function () {
    return { number: 0 };
  },

  getChildContext: function () {
    return { number: this.state.number };
  },

  componentDidMount: function () {
    setInterval(function () {
      this.setState({
        number: this.state.number + 1
      });
    }.bind(this), 1000);
  },

  render: function() {
    return <Middle />;    
  }
});

React.render(<Top />, document.body);

рдпрджрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрдЧреА рдЬрдм рдореИрдВрдиреЗ Middle рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрджрд░реНрдн-рдЬрд╛рдЧрд░реВрдХ shouldComponentUpdate рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреНрдпреЛрдВрдХрд┐ Middle рдХрд╛ рдХреЛрдИ this.context рддрдм рддрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрдм рддрдХ рдХрд┐ рд╡рд╣ рдЗрд╕рдХрд╛ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░рддрд╛ред рдореЗрдВред

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

рдХреНрдпрд╛ рдЗрд╕реЗ # 2112 рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдХреНрдпрд╛ рдЗрд╕ рдмреАрдЪ рдПрдХ рдФрд░ рдЙрдкрд╛рдп рд╣реИ? рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?

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

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдкреНрд░рд╕рдВрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реГрдХреНрд╖реЛрдВ рдХреЗ рдЬрд╛рд▓ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдмрд┐рдирд╛ shouldComponentUpdate рдмреАрдЪ рдореЗрдВ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛?

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

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

рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рд╣реИред рдЗрд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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

@sebmark рдХрдЪрд░рд╛ - рд╡рд┐рдЪрд╛рд░?

рд╣рд╛рдБ, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдмреАрдЪ рдХреЗ рдШрдЯрдХ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреБрдЫ рджреВрд░ рдХреЗ рдмрдЪреНрдЪреЗ рдХреЛ рдХрд┐рд╕ рд╕рдВрджрд░реНрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдРрд╕рд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╡реЗ рдпрд╣ рдЬрд╛рди рд╕рдХреЗрдВ рдХрд┐ contextTypes рднреА _be рд╕рдХреНрд╖рдо_ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ shouldComponentUpdate рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдкреНрд░рд╕рдВрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реГрдХреНрд╖реЛрдВ рдХреЗ рдЬрд╛рд▓ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдмрд┐рдирд╛ shouldComponentUpdate рдмреАрдЪ рдореЗрдВ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛?

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

@gaearon рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП shouldComponentUpdate рдХрд╛ рдШрдЯрд╛рдиреЗ рдХреЗ рдЙрдк-рдпреЛрдЧ рдХрд╛ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛ рд╕рдВрджрд░реНрдн рддрддреНрд╡ рдкреЗрдбрд╝ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛрдЧрд╛ред

@andreypopp

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

http://jsbin.com/geseduneso/2/edit?js , рдЖрдЙрдЯрдкреБрдЯ

(рдпрджрд┐ рдпрд╣ рдорд╛рдорд▓рд╛ рдерд╛, рддреЛ рджреЛрдиреЛрдВ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА)

рдЕрд╕рдВрдЧрддрд┐ рдХрд╣рд╛рдБ рд╣реИ?

рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ context рдХреЛ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ рд╕рдВрджрд░реНрдн рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЗ рдкрд╛рд╕ "рд╕реНрдЯреЛрд░" рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ getChildContext() componentWillUpdate рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рд╡рдВрд╢рдЬ рд╕рдВрджрд░реНрдн рдЙрдкрднреЛрдХреНрддрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ contextTypes рдореЗрдВ рдЙрд╕ рд╕рдВрджрд░реНрдн рд╕реЗ рдЪрд╛рдмрд┐рдпрд╛рдБ рдШреЛрд╖рд┐рдд рдХреАрдВ, рдЙрдиреНрд╣реЗрдВ рдпрд╣ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЙрд╕ "рд╕реНрдЯреЛрд░" рдХреА рд╕рджрд╕реНрдпрддрд╛ рджреА рдЧрдИ рдереА рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдерд╛ред

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

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

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

рд▓реЗрдХрд┐рди рдлрд┐рд░, рдПрдХрдорд╛рддреНрд░ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдЬреЛ рдореБрдЭреЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рд╡рд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрджрд░реНрдн рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдордирд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, getChildContext() getInitialState() рд╕рдорд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдШрдЯрдХ рдХреЗ рдорд╛рдЙрдВрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рд╕рдВрджрд░реНрдн рдХреЛ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд░рдХ рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред рд╣рдо рдХрднреА рднреА рдЕрджреНрдпрддрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо shouldComponentUpdate рд╕реЗ рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрдм рдЖрдк _need_ рд╕рдВрджрд░реНрдн рд╕реНрд╡рд╛рдореА рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ activeRoutes ActiveState mixin cc @mjackson рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЯреЙрдк-рдбрд╛рдЙрди рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ), рддреЛ рдХреБрдЫ рднреА рдЖрдкрдХреЛ { addChangeListener, removeChangeListener, getActiveRoutes } рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ context ред рд╡рдВрд╢рдЬ рдЕрдм рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ state рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╢реНрди рд╣реИ:

рдХрд┐рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ _data_ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИ context props рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ рдпрд╛ рдПрдХ рдШрдЯрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ setState рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдирд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдХрд╛рдлреА рдЦреБрд╢реА рд╕реЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдкрд░ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдкрдврд╝рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ред рдЬреИрд╕реЗред this.context.triggerAction("something")

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

GetChildContext () рдмрдирд╛рдирд╛ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ getInitialState () рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдПрдХ рдореВрд▓ рдиреЛрдб рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореВрд▓ рдиреЛрдб рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП рд╕рдВрджрд░реНрдн рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рднрд╛рд╡рд┐рдд рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдВрджрд░реНрдн рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдЕрдкреНрд░рднреЗрджреНрдп рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рддрд╛рд░-рддрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @andreypopp рд╕рд╣реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛ рдмрд╣реБрдд рдХрдо рд╕реЗ рдХрдо, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП shouldComponentUpdate рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреБрдЫ рднреА рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдВрджрд░реНрдн рдЪрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд▓реМрдЯрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдЖрдЬ рдмрд╛рдж рдореЗрдВ @sebmarkbage рд╕реЗ рдЪреИрдЯ

GetChildContext () рдмрдирд╛рдирд╛ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ getInitialState () рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╣рдореЗрд╢рд╛ рдПрдХ рдореВрд▓ рдиреЛрдб рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореВрд▓ рдиреЛрдб рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП рд╕рдВрджрд░реНрдн рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рднрд╛рд╡рд┐рдд рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдВрджрд░реНрдн рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдЕрдкреНрд░рднреЗрджреНрдп рд╣реИред

рдЖрдЙрдЪред рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИрдВ, рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

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

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

@sebmark рдХрдЪрд░рд╛ рдФрд░ рдореИрдВрдиреЗ рдмрд╛рддрдЪреАрдд рдХреА, рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрдП:

  • shouldComponentUpdate рдПрдХ рдЬрдЯрд┐рд▓ рдПрд╕реНрдХреЗрдк рд╣реИрдЪ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдШрдЯрдХ рдХреЗ рддрд╣рдд рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХреА рдареЛрд╕ рд╕рдордЭ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рдорд╛рдирдирд╛ тАЛтАЛрдЕрдиреБрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рд╕рдВрджрд░реНрдн рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕реЗ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
  • рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рд╢рд╛рдпрдж рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдмрд╣реБрдд рдмрджрддрд░ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкреБрд░рд╛рдиреЗ "рдорд╛рд▓рд┐рдХ" рд░рд┐рд╢реНрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдПрдХ рд╕реБрдзрд╛рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╡рддрдГ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╣реИред
  • рд╕рдВрджрд░реНрдн рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдЬрдЯрд┐рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ / рдкреНрд░рдпреЛрдЧ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди / рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рд╕реАрдЦрддреЗ рд╣реИрдВ, рд╣рдо рд╕рдВрднрд╡рддрдГ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЪрд▓рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред

@sebmark рдХрдЪрд░рд╛ , рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ рднреА рдпрд╛рдж рдХрд┐рдпрд╛!

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЪреНрдЫреА рдЪрд░реНрдЪрд╛! рдкреВрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

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

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

рдпрд╣ рддрдм рдФрд░ рднреА рдмрджрддрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЪреМрдЦрдЯреЗ (рдЬреИрд╕реЗ рдХрд┐ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд░рд┐рдПрдХреНрдЯ рд░реВрдЯрд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ ) рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рднреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрд╣реАрдВ рди рдХрд╣реАрдВ, рдРрд╕реЗ рдРрдк рд╣реИрдВ рдЬреЛ рд╕рдХреНрд░рд┐рдп рд▓рд┐рдВрдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдиреЗ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ _no рд╡рд┐рдЪрд╛рд░_ рдирд╣реАрдВ рдерд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ shouldComponentUpdate contextTypes рд╕реЗ _even get_ nextContext рдШреЛрд╖рдгрд╛ рдХрд░рдиреА рдереАред shouldComponentUpdate ред

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

рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХреБрдЫ рд░реВрдкрд░реЗрдЦрд╛рдПрдБ, рдЬреИрд╕реЗ рдХрд┐ @swannodette рдУрдо, PureRenderMixin -ish shouldComponentUpdate _default_ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдЯ рджреЗрдирд╛ рдЕрдЬреАрдм рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЙрдирдХреЗ рд▓рд┐рдП рд╣рд░ рдШрдЯрдХ рдореЗрдВ рд╕рдВрджрд░реНрдн-рддреЛрдбрд╝ shouldComponentUpdate ред

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

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЬреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡рд╣ рдкреИрддреГрдХ рдкреЗрдбрд╝ рдореЗрдВ рдХрд╣реАрдВ рднреА рдПрдХ рдирдпрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрдиреЗ рдкрд░ shouldComponentUpdate ред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ shouldUpdateChildContext рдпрд╛ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреВрд░реЗ рдЙрдк-рдпреЛрдЧ рдХреЛ рд╕рдореЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

@sebmarkbage

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

рд╕рд╣реА рд╣реИ, рдпрд╣ рд╣рдореЗрд╢рд╛ рдмреЗрдХрд╛рд░ рдерд╛ред

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

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

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╡рд╛рд▓ рднреА рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ: рдЬрдм рд╕рдВрджрд░реНрдн рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ? рд░рд╛рдЬреНрдп рдФрд░ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ setState рдФрд░ render / setProps ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХрд╣реАрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рд╕рдВрджрд░реНрдн рдХреА рдПрдХ рдкреНрд░рддрд┐ рд░рдЦрдиреЗ рдФрд░ getChildContext рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрдм рднреА render рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдЗрд╕рд▓рд┐рдП, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП,

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

var peopleStore = this.context.peopleStore;
var person = peopleStore.get(this.props.personId);
return <div>person.fullName</div>;

рдЕрд╡рдпрд╡ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рджреБрдХрд╛рдиреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА рдкрд░ рдлреИрд╕рд▓рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╕рднреА рджреБрдХрд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рдСрдирдХреЙрдиреНрдЧ рдЗрд╡реЗрдВрдЯ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВрдиреЗ рджреЛ рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдкрд░ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓рд┐рдпрд╛ рд╣реИ,
1) рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрдкрддреНрддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╢реНрд░реЛрддрд╛
2) рдЕрдЧрд░ рджреБрдХрд╛рдиреЛрдВ рдореЗрдВ рд╕реНрдЯреЛрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрджрд┐ "рд▓реЛрдЧ" "fb рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" рдереЗ, рддреЛ рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдПрд╕рд┐рдВрдХреНрд╕ рд╕реНрдЯреЛрд░ рд╣реИред рдХреНрдпрд╛ рдореБрдЭреЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдПрдХ (getFriends, getPerson, рдЖрджрд┐) рд▓реЗрдХрд┐рди рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реНрдЯреЛрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдЕрдиреВрдареЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред

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

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

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

onContextChange (рдкреНрд░рдЪрд▓рд┐рдд, рдирдпрд╛)

рддрддреНрд╡ рддрдм рджреЛ рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдирдпрд╛ PeopleStore рд╢реВрдиреНрдп рд╣реИред рддрддреНрд╡ рдкрд┐рдЫрд▓реЗ рд╕реНрдЯреЛрд░ рд╕реЗ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдЧрд╛ рдФрд░ рд░реЗрдВрдбрд░ () рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред рд░реЗрдВрдбрд░ рддрдм рдХреБрдЫ 'рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдЬреНрдЮрд╛рдд' рдкреНрд░рдХрд╛рд░ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдПрдЧрд╛ред

рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рд╕реНрдЯреЛрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрддреНрд╡ reattaches, рдФрд░ рд░реЗрдВрдбрд░ () рдирдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред

рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ, "this.render ()" рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдХрд┐рд╕реА рднреА рдбрд┐рдЬрд╛рдЗрди / рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдлреНрд░реЗрдорд╡рд░реНрдХ рджреНрд╡рд╛рд░рд╛ рд░реЗрдВрдбрд░ () рдХреЙрд▓ рдХреЛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╕рд╛рде рдмреИрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдЗрд╕рдореЗрдВ рдХрд╛рдлреА рд░реБрдЪрд┐ рд╣реИред (рдКрдкрд░ рд╕рдВрджрд░реНрдн рджреЗрдЦреЗрдВред)

рд╣рд╛рдВ @ рдмреЗрдпрд░рд░реЙрди ред

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

рдпрд╣ рд╕рднреА рджреЗрдЦреЗрдВ
https://github.com/yahoo/react-intl/issues/58
https://github.com/facebook/react/issues/3038

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

@gpbl рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐:
https://github.com/facebook/react/issues/3038#issuecomment -76449195

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

@slorber unmountComponentAtNode рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдмреБрд░рд╛ рдЕрдиреБрднрд╡ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рднреА рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд┐рддрд┐ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред

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

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

@ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд┐рддрд┐ рдХреЛ рдвреАрд▓рд╛ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╕реНрдерд╛рдиреАрдп рд░рд╛рдЬреНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдореЗрд░рд╛ рдкреВрд░рд╛ рдРрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рдмрд╛рд╣рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ :) рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЬреЛ рд╡реАрдбрд┐рдпреЛ рдмрдирд╛рдпрд╛ рд╣реИ, рдЙрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ: https: / /github.com/stample/atom-react

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

рд╣рд╛рдВ, shouldUpdateChildContext рдЗрд╕реЗ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рдордорд┐рдд рдмрдирд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореМрдХрд╛ 0.14 рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП?

рдпрджрд┐ рдЖрдк рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред :)

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

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

9 рдЕрдкреНрд░реИрд▓ 2015 рдХреЛ, 1:32 рдмрдЬреЗ, рджрд╛рди рдЕрдмреНрд░рд╛рдореЛрд╡ рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореМрдХрд╛ 0.14 рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП?

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред

рдЬрд╝рд░реВрд░, рдореИрдВ рджреЗрдЦ рд▓реВрдБрдЧрд╛!

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рджреЛрд╕реНрддреЛрдВ, рдореБрдЭреЗ рдЕрднреА рднреА рдЗрд╕ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рд▓рдВрдмрд┐рдд рд░рд┐рдПрдХреНрд╢рди рдбреАрдЖрдИрдПрдирдбреА 1.0 рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рдореИрдВ рдЗрд╕ рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╕реНрдд рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЬрд▓реНрдж рд╣реА рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рдкрд╛рдКрдВрдЧрд╛ред :-(

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

рдПрдХ рдмрд╛рдд рдЬреЛ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдерди рд╕рддреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВ:

рдПрдХ рдШрдЯрдХ рдХреЗ рдмрдЪреНрдЪреЗ рдХрд╛ рд╕рдВрджрд░реНрдн _always_ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╣ рд░рд╛рдЬреНрдп рд╕рд╣рд╛рд░рд╛, рдФрд░ рд╕рдВрджрд░реНрдн рдХреА рдХрдореА рд╣реИ

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬреНрдЮрд╛рдд рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЗ рднреАрддрд░ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╡рд╛рд╣рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рдХрдерди рдХреЗ рд╕рдорд╛рди рд╣реИ рдХрд┐ "рдПрдХ рдШрдЯрдХ рдХрд╛ рдкреНрд░рд╕реНрддреБрддрд┐рдХрд░рдг рд╣рдореЗрд╢рд╛ рд░рд╛рдЬреНрдп рдФрд░ рд╕рд╣рд╛рд░рд╛ рдХреА рдХрдореА рд╣реИ"ред

рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - рдпрд╣ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рд╣реВрдВ!

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

shouldComponentUpdate 3 рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд░рд╣рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЙрдкрд░реНрдпреБрдХреНрдд рдЙрдк-рд╡реГрдХреНрд╖ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдпрд╣ рддрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреА рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣рд╛рдВ рдЭреВрдареЗ рд▓реМрдЯрдирд╛ рдЙрдк-рд╡реГрдХреНрд╖ рдХреЗ рдиреАрдЪреЗ рдмрд╣рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджрд░реНрдн рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)

рдПрдХ рдФрд░ рдмрд╛рдд рдореИрдВ рдпрд╣рд╛рдБ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рджреВрд╕рд░рд╛ рдирдпрд╛ рдЬреАрд╡рдирдЪрдХреНрд░ рддрд░реАрдХрд╛ componentWillReceiveContext рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? - рд╕рдорд╛рди рд╕рдордп рдкрд░ componentWillReceiveProps рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрджрд░реНрдн рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрди рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ "рдЙрд╕реА рд╕рдордп" рдХрд╣рд╛ рдЬрд╛рдПред

@Chrisui

рдХреГрдкрдпрд╛ рдЗрд╕ рдкрд░ рдХреВрджреЗрдВ! рдореИрдВ рдЗрд╕ рд╕рдордп рдЕрдиреНрдп рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде рд╡реНрдпрд╕реНрдд рд╣реВрдВред

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬреНрдЮрд╛рдд рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЗ рднреАрддрд░ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╡рд╛рд╣рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ 0.14 рдореЗрдВ observe рд╣реБрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ data / observed / рдЬреЛ рдХреБрдЫ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред

рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдкрд░ рдЗрд╕ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╕реМрджрд╛ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ examples/context/index.html рдкрд░ рдЪрд▓рддреЗ рд╣реБрдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг "рд╕рдВрджрд░реНрдн рдорд╛рддрд╛-рдкрд┐рддрд╛" / "рд╕рдВрджрд░реНрдн рдмрдЪреНрдЪреЗ" рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЧрдпрд╛ рд╣реВрдВред рдПрдХ "рд╕рдВрджрд░реНрдн рдорд╛рддрд╛-рдкрд┐рддрд╛" рдХреЛрдИ рднреА рдШрдЯрдХ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдмрд╛рд▓ рд╕рдВрджрд░реНрдн (рдпрд╛рдиреА, childContextTypes ) рд╣реИ рдФрд░ "рд╕рдВрджрд░реНрдн рдмрдЪреНрдЪрд╛" рдХреЛрдИ рднреА рдШрдЯрдХ рд╣реИ рдЬреЛ рд╕рдВрджрд░реНрдн рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдпрд╣ рдмрд╛рд▓ рд╕рдВрджрд░реНрдн (рдпрд╛рдиреАред contextTypes рдпрд╛ childContextTypes )ред рдЬрдм рдШрдЯрдХ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕рдВрдмрдВрдз рд╕реЗрдЯрдЕрдк рд╣реЛрддрд╛ рд╣реИред

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

  1. рдпрджрд┐ рдШрдЯрдХ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ _not_ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ (рдпрд╛рдиреА shouldComponentUpdate() === false ) рддреЛ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ shouldUpdateChildContext рд╕рд╛рде рдмрд╛рд▓ рд╕рдВрджрд░реНрдн рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдпрд╣ true (рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рд╣реИ, рддреЛ рдпрджрд┐ рдЗрд╕ рдШрдЯрдХ рдореЗрдВ рдХреЛрдИ рднреА "рд╕рдВрджрд░реНрдн рдмрдЪреНрдЪреЗ" рд╣реИрдВ, рд╣рдо рдмрдЪреНрдЪреЗ рдХреЗ рдШрдЯрдХ рдХреЛ рдЕрджреНрдпрддрди рдЬреАрд╡рдирдЪрдХреНрд░ рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рддрдм рддрдХ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ рдЬрдм рддрдХ рд╣рдо рд╕рдВрджрд░реНрдн рд╡реГрдХреНрд╖ рдХреЗ рдЕрдВрдд рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ рд╣рдо shouldUpdateChildContext() === false рднрд░ рдореЗрдВ рдЖ рдЬрд╛рддреЗ рд╣реИрдВ
  2. рдЕрдЧрд░ рдХрд┐рд╕реА рдХрдВрдкреЛрдиреЗрдВрдЯ рдХрд╛ рдЕрдкрдбреЗрдЯ рдЕрдкрдбреЗрдЯ рд╣реИ рддреЛ рдХреБрдЫ рднреА рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрджрд░реНрдн рдбреЗрдЯрд╛ рдХрд╛ рдХреЛрдИ рд╕рд╛рдЗрдб рдЪреИрдирд▓рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╡рд╛рд╣ рдХреЛ рддрдм рддрдХ рдЬрд╛рд░реА рд░рд╣рдиреЗ рджреЗрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдШрдЯрдХ # 1 рдХреЗрд╕ рдХреЛ рд╣рд┐рдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

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

рдПрдХ рддреНрд╡рд░рд┐рдд psuedo- рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

<Root num={1}>  // Gives context {num: this.props.num}
  <Mid>         // Ignores any context and shouldComponentUpdate() === false
    <Child>     // Requires context {num: propTypes.number}

рд╢реБрд░реБрдЖрддреА рд░реЗрдВрдбрд░ (рдорд╛рдЙрдВрдЯрд┐рдВрдЧ) рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред (Implред рд╡рд┐рд╕реНрддрд╛рд░: рдПрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ / рдмрдЪреНрдЪреЗ рдХрд╛ рд╕рдВрдмрдВрдз Root рдФрд░ Child рдХреЗ рдмреАрдЪ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддрд╛ рд╣реИ)

рд╣рдо Root num 2 рдореВрд▓реНрдп рдХрд╛ рдореВрд▓реНрдп рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ

<Root num={2} />

Mid рднреА shouldComponentUpdate() рдкрджреНрдзрддрд┐ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ рдЬреЛ false рд▓реМрдЯрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ render() рдкрджреНрдзрддрд┐ context.num рдмрд╛рд░реЗ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ - рддреЛ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдкреБрд░рд╛рдиреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ Child рдШрдЯрдХ рдХрднреА рднреА рдирдП рд╕рдВрджрд░реНрдн рдХреЛ рдирд╣реАрдВ рджреЗрдЦреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкреЗрдбрд╝ рд╕реЗ рдиреАрдЪреЗ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИред

рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдм рд╣рдо shouldUpdateChildContext() Mid shouldUpdateChildContext() рд╡рд┐рдзрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдорд╛рдирддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕рдВрджрд░реНрдн рдорд╛рди рд╣реИ рдмрджрд▓рд╛ рд╣реБрдЖред рдиреЛрдЯ: shouldUpdateChildContext() рдХрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ shouldComponentUpdate() рд╕рдорд╛рди рд╣реИред

рдпрджрд┐ shouldUpdateChildContext() true (рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣реИ) рддреЛ рд╣рдо рдЕрдкрдиреЗ рдирд┐рдХрдЯрддрдо 'рд╕рдВрджрд░реНрдн рдмрдЪреНрдЪреЛрдВ' рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдорд╛рдорд▓реЗ рдореЗрдВ Child ) рдпрджрд┐ рдХреЛрдИ рд╕рдВрдмрдВрдз рдкрд╣рд▓реЗ рд╕реЗ рд╕реЗрдЯрдЕрдк рдерд╛ ред рдпрд╣ рдЙрд╕ рдШрдЯрдХ рдХреЛ рдЕрджреНрдпрддрди рдЬреАрд╡рдирдЪрдХреНрд░ рдореЗрдВ рдбрд╛рд▓ рджреЗрдЧрд╛ (рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рджреЗрдЦреА рдЧрдИ рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред _still_ shouldComponentUpdate() _

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рддрд╛ рд╣реИ!

@ рдХреНрд░рд┐рд╕рд╣реБрдИ рдХреВрд▓, рдЗрд╕ рдкрд░ рдХреБрдЫ рдкреНрд░рдЧрддрд┐ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди! рд╣рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдиреНрдпреВрдирддрдо:

  • рдпрджрд┐ рдкреИрд░реЗрдВрдЯ shouldComponentUpdate() рд░рд┐рдЯрд░реНрди рдЧрд▓рдд рд╣реИ рддреЛ рднреА рдмрдЪреНрдЪреЗ рдХреЗ рдЕрдкрдбреЗрдЯ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВред
  • рдпрджрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ shouldUpdateChildContext() рдЭреВрдареЗ рд╣реИрдВ рддреЛ рднреА рдмрдЪреНрдЪреЗ рдХреЗ рдЕрдкрдбреЗрдЯ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВред
  • рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдШрдЯрдХ shouldUpdateChildContext() рдЧрд▓рдд рд╣реЛрдиреЗ рдкрд░ рдмрдЪреНрдЪрд╛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдпрджрд┐ рдпреЗ рд╕рдорд░реНрдерд┐рдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

  • рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ shouldUpdateChildContext() рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рдПрдХ рджрд╛рджрд╛ рджрд╛рджреА рдЙрдирдХреЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдВрджрд░реНрдн рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрджрд▓рддрд╛ рдирд╣реАрдВ рд╣реИред
  • рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдШрдЯрдХ рдмрджрд▓реЗ рдЧрдП рд╕рдВрджрд░реНрдн рдЪрд░ рд╕реЗ рдирд╣реАрдВ рдкрдврд╝рддрд╛ рд╣реИ, рддреЛ shouldUpdateChildContext() рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред
  • рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЛрдк рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рд╕рдВрджрд░реНрдн рдЪрд░ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рд╣рдо рджреЛ рдмрд╛рд░ рдЕрдкрдбреЗрдЯ / рд░реЗрдВрдбрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

cc: рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╛рдЗрди / рд╡рд┐рдЪрд╛рд░ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП @sebmark рдХрдЪрд░рд╛ ред

@ рдХреНрд░рд┐рд╕рд╣реБрдИ рдпрд╣ рдЕрдм рддрдХ рд╢рд╛рдирджрд╛рд░ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@jimfb рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ - рдмрд╕ рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП!

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

рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╡рд░рдг рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдФрд░ рдЪрд░реНрдЪрд╛ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд▓реЛрдЧ рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рддреНрд╡рд░рд┐рдд рд╣реИрдХ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЕрднреА рдореЙрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ!

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

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

рджрд░рдЕрд╕рд▓, рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдЪреВрдБрдХрд┐ context рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдХреЛрдк рдЧреНрд▓реЛрдмрд▓ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдЪрд░ рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдШрдЯрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдЙрд╕реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдиреНрдп рд╕рднреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдбреЗрдЯрд╛ред Https://github.com/facebook/react/issues/3398 , https://github.com/facebook/react/issues/3858 , рдФрд░ https://github.com/facebook/react/pull/3920 рджреЗрдЦреЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАред

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

@jimfb рдЖрдк рд╕реИрдХрдбрд╝реЛрдВ рдШрдЯрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдЕрд▓рдЧ рд╣реИ рдЕрдЧрд░ рдЖрдк рдХреБрдЫ рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрджреНрдпрддрди рдХреЛ рд░реЛрдХрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП shouldComponentUpdate рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

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

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИ

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

рдбреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╡реЗрджрди рдХреЗ рджреМрд░рд╛рди рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред

26 рдордИ 2015 рдХреЛ 22:10 рдмрдЬреЗ, рдЬрд┐рдо рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @ithub.com рдиреЗ рд▓рд┐рдЦрд╛:

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

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

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред

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

class Mid extends Component {
  shouldComponentUpdate() { return false; }
  shouldUpdateChildContext() { return false; }
  ...
}

рдореИрдВ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рд╛рджрдЧреА рд╕реЗ рдЦреБрд╢ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЦрдбрд╝рд╛ рд╣реИ + shouldUpdateChildContextред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрдВрддреНрд░ рдЕрдиреНрдп рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдХрдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

@jimfb
рдЬреИрд╕рд╛ рдХрд┐ @eplawless рдиреЗ рдмрддрд╛рдпрд╛ рд╣реИ рдХрд┐

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

рдПрдХ рдЕрдиреНрдп рд╕реБрдЭрд╛рд╡: рд╣рдо рдЗрд╕ рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд░реЛрдХрдиреЗ рдФрд░ рдЗрд╕реЗ рдСрдкреНрдЯ-рдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЭреВрдареА toUpdateChildContext () рдХреЛ рднреА рдЧрд▓рдд рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдЦрд╛рддрд┐рд░ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдВрдЧрд▓реА рдореЗрдВ рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (рдЙрд╕реА рд╢реИрд▓реА рдореЗрдВ рд╕рдВрджрд░реНрдн рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣рдореЗрд╢рд╛ рд╕реЗ рд░рд╣реА рд╣реИ - рдЗрд╕рд▓рд┐рдП рдЕрдиреИрдЪреНрдЫрд┐рдХ) рдХреНрдпрд╛ рд╣рдореЗрдВ 0.14 рдХреЗ рд▓рд┐рдП рдЗрд╕ рдПрдкреАрдЖрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? (рджреНрд╡рд╛рд░рдкрд╛рд▓реЛрдВ рд╕реЗ рд╕реБрдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛!)

рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ PR рдЦреЛрд▓рд╛: https://github.com/facebook/react/pull/3973

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

рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ shouldUpdateChildContext рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рдд рдерд╛ред рдХреНрдпрд╛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдереНрд░рд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред

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

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

рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕реЛрдЪреВрдВрдЧрд╛ рдФрд░ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдкреАрдЖрд░ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реВрдВрдЧрд╛ ...

@sebmark рдХрдЪрд░рд╛ рдореИрдВ shouldUpdateChildContext рдкрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣рдореЗрд╢рд╛ рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рд╣реЛрддреА рд╣реИред рд╣рдо рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ API рд╕реЗ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рдВрджрд░реНрдн рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреВрджрддрд╛ рд╣реИ рдФрд░ рд╕рдВрджрд░реНрдн рдЪрд░ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдХрд┐рд╕реА рднреА рдШрдЯрдХ рдкрд░ рдкреБрди: рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ)ред рдпрджрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд▓рд╛рдпрди рд╣реИрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @mjackson рдиреЗ рдХрд╣рд╛ рдХрд┐ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рд╕рдВрджрд░реНрдн рдЪрд░ рдХрдм рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд░ fbt / i18n рдЯреЗрдХреНрд╕реНрдЯ рдиреЛрдб рдХреЛ рд╣рд░ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, i18n рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯрдкреНрд░реЙрдЗрдбрд░ рдлрд┐рд░ рд╕реЗ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ? рд╣рдордиреЗ рдЕрднреА рддрдХ рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ "рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рдкреГрд╖реНрда рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рда рддрддреНрд╡ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рди рдХрд░реЗрдВ"ред

рдореИрдВ рдЖрдкрдХреЗ рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рд╣реВрдВ; рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджрд░реНрдн рдХрд╛ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ: рдПрдХ i18n рдШрдЯрдХ рд╕рднреА i18n- рдЬрд╛рдЧрд░реВрдХ рдмрд╛рд▓ рдШрдЯрдХреЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ / рд╕рдордпрдХреНрд╖реЗрддреНрд░ / рд╕реНрд╡рд░реВрдкрдг / рдЖрджрд┐ рдХреЗ рд▓рд┐рдП 'рдкреНрд░рд╕рд╛рд░рдг' рдХрд░рддрд╛ рд╣реИред

рдкреАрдЖрд░ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА, рдпрд╣рд╛рдБ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ:

@sebmarkbage @Chrisui @jimfb

рдкреБрди :: shouldUpdateChildContext , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ shouldComponentUpdate рд░рд┐рдЯрд░реНрди рд╕рд╣реА рд╣реИ, рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЪреНрдЪреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред shouldComponentUpdate рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЙрд╕ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдХреЛ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рджреВрд░ рд▓реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдмреЗрд╣рддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрд╣ shouldUpdateChildContext рдХрд╛ рд╕рдЪ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рд╕реЗ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИред

рдкреБрди: рдкреВрд░реЗ рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд╛рд░рдг рдирд╣реАрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛ рд╡реИрдз рдкреИрдЯрд░реНрди рд╣реИрдВред рд╡рд░реНрдорд╣реЛрд▓, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ # 2517 рдореЗрдВ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛, рд╕рд╣реА рдЕрд░реНрде рд╣реИред рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ (рдЬреИрд╕реЗ рдлрд╝реЛрдХрд╕ рдФрд░ рд╡реЙрдЗрд╕) рдХреЗ рднреАрддрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ (рд╢рд╛рдпрдж рд╕рдВрдкреВрд░реНрдгрддрд╛) рдХреЗ рдПрдХ рдкреВрд░реЗ рдЕрдиреБрднрд╛рдЧ рдХреЗ рд▓рд┐рдП i18n рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред рд╡рд░реНрдорд╣реЛрд▓ рдкреИрдЯрд░реНрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрд╕ рддрд░рд╣ рдХрд╛ рдкреНрд░рд╕рд╛рд░рдг рдкреИрдЯрд░реНрди рд╢рд╛рдпрдж рд╣реА рджреБрд░реНрд▓рдн рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реИред

рдЕрднреА рд╣рдо рдПрдХ рд╣реА рд╕реНрд░реЛрдд рд╕реЗ рдлрд╝реЛрдХрд╕ рдФрд░ рд╡реЙрдпрд╕ рдЧреНрд░реБрдк рдХреЗ рд▓рд┐рдП рдХрднреА-рдХрднреА рдорд┐рдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 1: 1 рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдз рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдкреНрд░рддрд┐рдмрдВрдз рдХреА рдЗрдЪреНрдЫрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред

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

@sebmark рдХрдЪрд░рд╛ @eplawless рд╡рд░реНрдорд╣реЛрд▓ рдкреИрдЯрд░реНрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реИрдз рд╣реИ? рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдЪреНрдЪреЗ рджреНрд╡рд╛рд░рд╛ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдмрдЪреНрдЪреЗ рдкрд░ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрджрд┐ред

<Table>
  <Cell />
  <Cell />
  <FancyCell />
</Table>
class FancyCell {
  render() {
    return <SomeWhatFancyCell>Some content</SomeWhatFancyCell>;
  }
}

class SomeWhatFancyCell {
  render() {
    return <Cell>{this.props.children}</Cell>;
  }
}

borderWidth рдФрд░ рдЗрд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ borderLeft/Top/Right/Bottom рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдХрдХреНрд╖реЛрдВ рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред

рдПрдХ рд╕рд╛рдл рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ borderWidth рд╕реЗ <Table /> , рдЗрд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╕рдВрджрд░реНрдн рд╕реЗ рдЧреБрдЬрд░реЗрдВред

рдпрд╣ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╕реЗрд▓ рдХреЛ рдЕрдкрдиреЗ рд╡реИрдЪрд╛рд░рд┐рдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд┐рдкреЗ рд╣реБрдП рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЛрдо рддрддреНрд╡ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрднрд╡рдд: рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдПрдХ "рд╕рдВрджрд░реНрдн" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдУрд╡рд░рдлреЛрдХрд╕ рди рдХрд░реЗрдВред рд╡рд░реНрддрдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрджрд░реНрд╢ рджреЛ рдЕрд▓рдЧ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреИрдирд▓ рдХреА рддрд░рд╣ рд╣реЛ?

рдкреНрд░рд╢рдВрд╕рдиреАрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рдПрдкреАрдЖрдИ:

class Table {
  render() {
    var w = this.props.borderWidth;
    var borderStyle = { left: w, right: w, top: w, bottom: w };
    return <context key={someSymbol} value={borderStyle}>{this.props.children}</context>
  }
}
class Cell {
  static contextKey = someSymbol;
  render() {
    var borderStyle = this.context;
    ...
  }
}

рдмрд╕ рдпрд╣рд╛рдБ рдереВрдХрдирд╛ рд╣реИред

рд╕реНрдкрд┐рдЯрдмреЙрд▓рд┐рдВрдЧ рдЬрд╛рд░реА рд╣реИ ...

рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ...

<Table borderStyleChannelKey="myKey">
  <Cell borderStyle={myKey} />
  <Cell borderStyle={myKey} />
  <FancyCell borderStyle={myKey} />
</Table>

рдЕрдм рдЖрдкрдиреЗ рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдирд╛рдо рдХреЗ рдЯрдХрд░рд╛рд╡ рдФрд░ рдЖрджрд┐ рдХреА рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рд╣реИ (https://github.com/reactjs/react-future/pull/28)

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

Btw, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕рд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЫрд┐рдкрд╛ рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рд╣реИ: рд░рд╛рдЬреНрдпред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрдЪреНрдЪреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕реЗ 'рдмреЙрд░реНрдбрд░ рд╕реНрдЯрд╛рдЗрд▓' рдХреЗ рдмрдЬрд╛рдп 'рд╕реНрдЯрд╛рдЗрд▓рд┐рдирдлреЛ' рдпрд╛ 'рд╕реАрд▓рдбреЗрдЯрд╛' рдХрд╣реЗрдВ, рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдПрдВред рдлрд┐рд░ рдлрд╝реАрд▓реНрдб / рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП Table рдФрд░ Cell рдмреАрдЪ API рдЕрдиреБрдмрдВрдз рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореЗрд░реЗ рд╡реИрд░рд┐рдПрдВрдЯ рдФрд░ рдЖрдкрдХреЗ рд╡реИрд░рд┐рдПрдВрдЯ рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ (рдореЗрд░реЗ рд╡реЗрд░рд┐рдПрдВрдЯ рдореЗрдВ) рдмрдЪреНрдЪреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд░реАрдб" рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╣ рдкреИрд░реЗрдВрдЯ рд╕реЗ рдПрдХ рдкреНрд░реЙрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╛рд╕ рд╣реЛред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ, рдЖрдкрдХрд╛ рдирд╡реАрдирддрдо рдкреНрд░рд╕реНрддрд╛рд╡ рд╡рд╕реНрддреБрддрдГ https://github.com/reactjs/react-future/pull/28 рд╕реЗ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рдорд╛рди рд╣реИ

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

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

рдореЗрд░рд╛ рдорддрд▓рдм рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдкреНрд░рддреАрдХ (рд░рд╛рдЬрдзрд╛рдиреА рдПрд╕) рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдХреНрд░рдорд╛ рдХрд░рдиреА рд╣реЛрдЧреАред https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol

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

рдУрд╣, рдЖрдИрд╕реА, @sebmark рдХрдЪрд░рд╛ рдлрд┐рд░ рд╕реЗ рдлреИрдВрд╕реА рдирдИ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреАрдВрдЪ рд░рд╣рд╛ рд╣реИ :)ред рдореБрдЭреЗ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рд╡рд╣ рдЖрдЬ TC39 рдХреА рдмреИрдардХ рдореЗрдВ рд╣реИрдВред

рдареАрдХ рд╣реИ, рддреБрдо рд╕рд╣реА рд╣реЛред рдпрд╣ рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡реА рд╣реЛрдЧрд╛, рдФрд░ рдкреНрд░рд╕рд╛рд░рдг рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред рддреБрдордиреЗ рдореБрдЭреЗ рдмреЗрдЪ рджрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗрдВ рдпрд╣ рдкрд╕рдВрдж рд╣реИ!

рдХрд╛рд╢ рдЖрдЬ рддреБрдо рджрдлреНрддрд░ рдореЗрдВ рд╣реЛрддреЗ! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдЖрдХрд░реНрд╖рдХ рдмрд╛рддрдЪреАрдд рд╣реЛрдЧреА!

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рд╡рд╣ рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдо рд╕рднреА рдХреЛ рднреА рд▓реВрдк рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ ;-)ред

рдореБрдЭреЗ рд╕рд┐рдВрдмрд▓ рд╡рд╛рд▓реА рдЪреАрдЬ рдмрд╣реБрдд рдкрд╕рдВрдж рд╣реИред рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рджреЗрд╢реА рдкреЗрдбрд╝ рдкрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреБрдВрдЬреА рдкрд░ рд╕рдВрджрд░реНрдн рдХреА рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░рддрд╛ рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдмреБрд░рд╛ рдЦрд┐рдВрдЪрд╛рд╡ рдереАред

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

рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрддрдорд╛рди рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдВрднрд╡рддрдГ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдЬреИрд╕реЗ рдХрд┐ npm рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдореЙрдбреНрдпреВрд▓ рдирд╛рдо (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

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

рдореИрдВ "рд╡рд░реНрдорд╣реЛрд▓" рд╕рд╛рджреГрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрддрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдкреНрд░рд╕рд╛рд░рдг рдкрд░рд┐рджреГрд╢реНрдп рдФрд░ i18n рдЙрджрд╛рд╣рд░рдг рд╡реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реВрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреАрдЖрд░ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИред

рдореИрдВ рдпрд╣ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ рдХрд┐ https://github.com/facebook/react/issues/2517#issuecomment -106597895 рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рд╢рдмреНрджрд╢рдГ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗChildContext рдФрд░ referenceTypes рдХреЗ рдмрд░рд╛рдмрд░ рд▓рдЧрддрд╛ рд╣реИред

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

AIUI рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рд╣рдореЗрд╢рд╛ рд╕реЗ рдереА, рд╣рд╛рд▓рд╛рдВрдХрд┐ shouldComponentUpdate context рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдВрджрд░реНрдн рдХреА рдкреНрд░рдХреГрддрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ "рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд░" рдФрд░ "рд░рд┐рд╕реАрд╡рд░" рдХреЗ рдмреАрдЪ рдХреЗ рдШрдЯрдХ рдЭреВрдареЗ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред

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

рдореИрдВ рдЕрдкрдиреЗ рдлреЙрд░реНрдо рдШрдЯрдХреЛрдВ рдореЗрдВ рдмрд┐рдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдореВрд▓ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдкрдиреЗ 2 рд╕реЗрдВрдЯ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдПрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрджреНрдпрддрди рддрдВрддреНрд░ рдХреА рдХрдореА рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛, рддрдВрддреНрд░ рдХреА рддрд░рд╣ рдкреНрд░рд╡рд╛рд╣ рдЬрд╣рд╛рдВ рдкреНрд░рдкрддреНрд░ ('рд╕реНрдЯреЛрд░' рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп) рд╕рдВрджрд░реНрдн рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ listen() рд╡рд┐рдзрд┐ рдЧреБрдЬрд░рддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ Field рдЕрд╡рдпрд╡ рдорд╛рдЙрдВрдЯ рдХреЗ рд╕рд╛рде рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рдкрддреНрд░ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЧрддрд┐ рджреЗрдЧрд╛ рдЬреЛ рдиреАрдЪреЗ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдмрд╣реБрдд рдлреНрд▓рдХреНрд╕-рд╡рд╛рдИ рд╣реИ рдФрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рдХрдВрдкреЛрдЬрд┐рдмрд┐рд▓рд┐рдЯреА рдореЙрдбрд▓ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИред

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

рд╕рдВрджрд░реНрдн рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрди рдШрдЯрдХреЛрдВ рд╕реЗ рдХреБрдЫ рд╣рдж рддрдХ "рд╕рдВрд░рдХреНрд╖рд┐рдд" рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡реНрдпрд╡рд╕рд╛рдп рдирд╣реАрдВ рд╣реИ _ рд▓реЗрдХрд┐рди _ рдЕрдЧрд░ рдШрдЯрдХ рдХреЛ рдЪрд╛рд╣рд┐рдП рддреЛ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдлреЙрд░реНрдо рдШрдЯрдХреЛрдВ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдореЗрдВ, Form рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдЙрд╕ рд╕рдВрджрд░реНрдн рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдиреАрдЪреЗ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ Field рдШрдЯрдХ рдХреЛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдХреЛрдИ рдЙрдкрднреЛрдХреНрддрд╛ рдПрдХ HoC рдореЗрдВ ( Field ) рдбрд┐рдлреЙрд▓реНрдЯ (рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЛ рд▓рдкреЗрдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреЛ рд╕рднреА рдХреЛ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдВрджрд░реНрдн рдПрдкреАрдЖрдИ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдордзреНрдпрд╡рд░реНрддреА (рдЕрдзрд┐рдХреГрдд) рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП reducers рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реА рддрд░рд╣ рдШрдЯрдХ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП / рдореИрдк рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдмрдХрд┐ рдкреНрд░реЙрдкреНрд╕ рдПрдХ "рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ" рднрд╛рдк рд╣реИрдВ, рд╕рдВрджрд░реНрдн рдПрдХ рдирд┐рдЬреА, рдСрдкреНрдЯ рдЗрди, рд╕реНрдЯреНрд░реАрдо рд╣реИ

рдореИрдВрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдкрдХреНрд╖-рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдЖрдзрд╛рд░рд┐рдд рд╕рдВрджрд░реНрдн рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕рд╛ рдЦреЗрд▓рд╛ рд╣реИред

рд╣реБрдб рдХреЗ рддрд╣рдд, рдкреНрд░рд╕рд╛рд░рдХ рдкреНрд░рд╕рд╛рд░рдХреЛрдВ рдиреЗ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ { subscribe(key, cb), getValue(key) } рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджрд┐рдпрд╛ред рдПрдХ рд╕рдВрджрд░реНрдн рдХреБрдВрдЬреА рдХреА рд╕рджрд╕реНрдпрддрд╛ рддрдм рддрдХ рд╕рдВрджрд░реНрдн рдЯреНрд░реА рдХреЛ рдмреБрд▓рдмреБрд▓реЗ рдмрдирд╛ рджреЗрддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╡рд╣ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдХреБрдВрдЬреА рдпрд╛ рдкреЗрдбрд╝ рдХреЗ рд╢реАрд░реНрд╖ рдХреЗ рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреАред рдкреНрд░рд╕рд╛рд░рдХ broadcast({ [key]: newValue, ...otherKeys }) рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджрд░реНрдн рдХреБрдВрдЬрд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддреЗ рд╣реИрдВред

@broadcasts([...keys]) рдФрд░ @observes([...keys]) рд╡рд░реНрдЧ рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдиреЗ рдЗрд╕ API рдХреЛ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХреЛрдВ рдореЗрдВ рдмрд╛рдБрдз рджрд┐рдпрд╛ рд╣реИ, рдШрдЯрдХ рдЯреНрд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджрд░реНрдн рдЯреНрд░реА рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП context рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ setState рдХреЛ рдЕрдкрдбреЗрдЯ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред

рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рдПрдХ рдмрд┐рдЯ рдХреЗ рд╕рд╛рде, рдЖрдк рд╡рд░реНрддрдорд╛рди shouldUpdateChildContext рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рдПрдкреАрдЖрдИ рд╕реЗрдЯрдЕрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдореИрдВрдиреЗ рдХрднреА рднреА рдХрд┐рд╕реА рднреА рдбрд╛рдпрдирд╛рдорд┐рдХ рдорд╛рди рдХреЛ рдиреАрдЪреЗ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕рдВрджрд░реНрднред рдореБрдЭреЗ рдпрд╣рд╛рдБ рдХреБрдЫ рдЦрд┐рд▓реМрдирд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрддреНрдкрд╛рджрди рдРрдкреНрд╕ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ? рдореИрдВ рдЕрдХреНрд╕рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдЬреНрдЮрд╛рдирд╡рд░реНрдзрдХ рдкрд╛рддрд╛ рд╣реВрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП I18n рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдХреЛрдИ рднреА рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдХреЛ рд╕реАрдзреЗ рдкрд╛рд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ? рдпрд╛ рдЖрдк рдмрд╕ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕рдВрджрд░реНрдн рдХреЛ рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдПрдХ рд╡рд╕реНрддреБ рдШрдЯрдХреЛрдВ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

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

рдЕрдкрдиреЗ 2 рд╕реЗрдВрдЯ рдХреЛ рдпрд╣рд╛рдБ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдкрд╕рдВрдж рдХрд░реВрдБрдЧрд╛ рдЕрдЧрд░ рдпрд╣рд╛рдБ рдХреЛрдИ рднреА рдлрд┐рдХреНрд╕ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ рдХрд┐ StaticContainer рди рдЯреВрдЯреЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ StaticContainer рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛, рдФрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЕрдкрдбреЗрдЯ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджрд┐рдпрд╛, рджреЛрдиреЛрдВ props рдФрд░ context ред

IMO рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ shouldComponentUpdate рдХреЛ рд╕рдВрднрд╡рддрдГ рдмрдЪреНрдЪреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп shouldComponentUpdate рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдЬрдм рднреА рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рд╣реЛред

@ jedwards1211 рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдПрдХ I18nProvider рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдЕрдиреБрд╡рд╛рдж рд╕рдВрджреЗрд╢ рд▓рд╛рдиреЗ рдФрд░ рдлрд┐рд░ Jed рдЙрджрд╛рд╣рд░рдг (рдЧреЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде) рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ред

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

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреГрд╢реНрдп рдШрдЯрдХреЛрдВ рдореЗрдВ gettext() рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдирд┐рдХрд╛рд▓ рд╕рдХреВрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ xgettext рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред

Reactiflux рдкрд░ @jquense рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдорд╛рд░рдирд╛; рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдПрдХ "рд╕реБрдкрд░ рдереЗ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ false " рдХреЗ рд▓рд┐рдП рдЕрд╡рдзрд╛рд░рдгрд╛ shouldComponentUpdate ред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджрд░реНрдн рдЕрджреНрдпрддрди shouldComponentUpdate false (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рджреЗрдЧрд╛) рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ <StaticContainer> рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рд╣реИрдВ <StaticContainer> ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, https://github.com/rackt/react-router/pull/2454 рдкрд░ рд╡рд┐рдЪрд╛рд░

рдореИрдВ рд╕рдордЭреМрддрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ shouldComponentUpdate false рд░рд┐рдЯрд░реНрди рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрджрд░реНрдн рдЕрдкрдбреЗрдЯ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди <StaticContainer> рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП SUPER_FALSE рдкреНрд░рд╣рд░реА рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред <StaticContainer> рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

@taion

рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдорд┐рдВрдЧ-рдЖрдЙрдЯ рд░реВрдЯ рдШрдЯрдХ рдкрд░ рд╕рдХреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рдХреЛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд░реЛрдХрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

@jimfb рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рд▓реЗ рдореЗрдВ <StaticContainer> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ - рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдЕрдкрдбреЗрдЯ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рд╣рдореЗрд╢рд╛ рдкреВрд░рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЬрдмрдХрд┐ рдирдпрд╛ рд░рд╛рдЙрдЯрд░ рд░рд╛рдЬреНрдп рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ false shouldComponentUpdate рд▓реМрдЯ рд░рд╣рд╛ рд╣реИред

@ рдЕрдВрдд рдореЗрдВ рдореИрдВ рд░рд┐рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдпрд╣ рдкрддрд╛

cc @sebmark рдХрдЪрд░рд╛

@jimfb

рд╢рд╛рдпрдж рдЖрдкрдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ (:

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

false shouldComponentUpdate , рд░рд┐рд▓реЗ рд░реВрдЯ рдХрдВрдЯреЗрдирд░ / рд░реЗрдВрдбрд░рд░ рдХреЗ рдкрд╛рд╕ рдЬреЛ рдХреБрдЫ рднреА рдкрд╣рд▓реЗ рдерд╛, рдЙрд╕реЗ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред

рдпрд╣ рдкреНрд░рддрд┐ рд╕реЗ рдЕрдзрд┐рдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ - рдпрд╣ рдПрдХ рдХреНрд╖рдгрд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдкрдбреЗрдЯ рдХреЛ рд░реЛрдХ рд░рд╣рд╛ рд╣реИред

@taion рд╣рд╛рдБ, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреИрдЯрд░реНрди рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рд╕реЗрдмрд╕реНрдЯрд┐рдпрди рдФрд░ рд░рд┐рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдЙрддреНрддрд░ "рд╣рд╛рдБ, рдпрд╣ рд╣реИрдХ рдерд╛, рдРрд╕рд╛ рдордд рдХрд░реЛ"ред

рдЖрдо рддреМрд░ рдкрд░, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдкреБрд░рд╛рдиреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд░рд╛рдЬреНрдп рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдирдП рдореВрд▓реНрдп рджрд┐рдЦрд╛рдИ / рди рдЖрдП рд╣реЛрдВ) рдФрд░ рд░рд╛рдЬреНрдп рд╕реЗ рдкреБрд░рд╛рдиреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ред

@jimfb

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

рд╕рд╛рдорд╛рдиреНрдп async рдбреЗрдЯрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреИрдЯрд░реНрди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

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

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

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

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

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

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

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

рдореИрдВ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯ рд╕рдХрддрд╛ рд╣реВрдВ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд░рд┐рдПрдХреНрдЯрд░ рд░рд╛рдЙрдЯрд░ рдХреА рддрд░рдл рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рджреВрд░ рдЬрд╛ рд╕рдХреЗрдВред

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

рдореИрдВ рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рднреА рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдРрд╕рд╛ рд╣реИред

var BlogPosts = React.createClass({
  getChildContext: function() {
    return {
      currentBlogPost: this.props.currentBlogPost,
      currentUser: this.props.currentUser
    };
  },

  childContextTypes: {
    currentBlogPost: React.PropTypes.object,
    currentUser: React.PropTypes.object
  },

  render: function() {
    return <BlogPosts blogPosts={this.props.blogPosts}/>
  }
});

function select(state) {
  const { blogPosts, currentUser, currentBlogId } = state;
  console.log( state.blogs[currentBlogId]); 
  // first time the above is undefined and then blogs get populated and I have the object;
  return { blogPosts, currentUser, currentBlogPost: state.blogs[currentBlogId] };
};

export default connect(select)(BlogPosts);

рдЕрдм BlogPosts рдШрдЯрдХ рдореЗрдВ BlogPostText, BlogPostImage, PodCast ... рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ BlogPosts [index] .type рдкрд╛рда, рдЫрд╡рд┐ рдпрд╛ рдСрдбрд┐рдпреЛ рд╣реИред

рдПрдХ рдШрдЯрдХ рдореЗрдВ рдореИрдВрдиреЗ рдорд╛рд▓рд┐рдХ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд╛рдБрдЪ рдХреА рд╣реИ,

var BlogPostText = React.createClass({
  canDeleteMemory: function(post, blog, user) {
    return user && (blog.userId == user.id || post.userId == user.id)
  },
  render: function() {
    let isOwner = this.canDeleteMemory(this.context.currentBlogPost, post, this.context.currentUser);
    return isOwner ? <a>Delete</a> : null;
  }
});

рдлрд┐рд░ рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ blog.userId рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмреНрд▓реЙрдЧ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ ... рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВ let isOwner = this.context.currentBlogPost && this.canDeleteMemory(this.context.currentBlogPost, post, this.context.currentUser);
рд▓реЗрдХрд┐рди рдлрд┐рд░ рдбрд┐рд▓реАрдЯ рдЖрдЗрдХрди рдХрднреА рдирд╣реАрдВ рджрд┐рдЦрд╛ ... рд▓реЗрдХрд┐рди рд╕рдВрджрд░реНрдн рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрдЬрд╛рдп рдЕрдЧрд░ рдореИрдВ BlogPostText рдШрдЯрдХ рдХреЛ Redux рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред Props.currentBlogPost рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ..

рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрддрдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ ... рдпрд╛ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЧрд▓рдд рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@ aghosh47 рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдВрджрд░реНрдн рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ

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

@jimfb рдареАрдХ рд╣реИ, рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦреВрдВрдЧрд╛, рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдЧрд░ рдореИрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рддреЛ рдПрдХ рдирдпрд╛ рд╕реВрддреНрд░

@ рдЬрд┐рдореНрдлрдм рдЬрд╣рд╛рдВ рд╡рдВрд╢рдЬ рдХреЗ рдмрд┐рдирд╛

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

@ jedwards1211 рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдЪрд░реНрдЪрд╛ рдХрд╣рд╛рдБ рдХреА рдЧрдИ рдереАред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЗрди-рдкрд░реНрд╕рди рдЪрд░реНрдЪрд╛ рдереА, рд▓реЗрдХрд┐рди рдСрдирд▓рд╛рдЗрди рдХрдИ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдЪрд░реНрдЪрд╛рдПрдВ рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рдЖрдк рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдкрд╛рдПрдВрдЧреЗред

Ping @aghosh47

hahaha

@jimfb рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ... рдХреЛрдб рдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рдереА рдФрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдиреЗ рд╡рд╛рджреЛрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП reducer рд░рд╛рдЬреНрдп рдареАрдХ рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ 'рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред

рддреЛ, рдЕрдЧрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдмрдЪреНрдЪреЛрдВ рдореЗрдВ рд╕рдВрджрд░реНрднрдкреНрд░рдХрд╛рд░ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ ... рдзрдиреНрдпрд╡рд╛рджред

рдЙрди рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?

@Kuburtin рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рд╕рднреА рдирд┐рд░реНрдорд┐рдд рдШрдЯрдХ рд╕рдорд╛рди рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рд╕рдВрдЧ рд╡реИрд╢реНрд╡рд┐рдХ рдПрдХ рд╣реА рдкреЗрдбрд╝ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдШрдЯрдХреЛрдВ рдХреЗ рд╕рднреА wrt рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдиреАрдп рдкреЗрдбрд╝ рдХреЗ рд▓рд┐рдП рд╣реАред рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рд░рд╛рдЬреНрдп рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдиреНрдп рдкреЗрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд▓реАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдкрд░, рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╣реИ? :рдЖрдБрдЦ рдорд╛рд░рдирд╛:

@fatfisz рдореИрдВ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдлреВ') рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдПрдХ рд╡рд┐рдВрдбреЛ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреА рдУрд░

рдореЗрд░реЗ рдРрдк рдореЗрдВ btw, рдореИрдВрдиреЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЗ рдкреНрд░реЙрдкреНрд╕ рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрджрд░реНрдн рдЕрд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдШрдЯрдХ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

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

рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ:

// context.js
module.exports  = { // sorry for using commonjs, since most of you use import/export I guess
  // some shared variables, initialized and used by components
};

рддрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ('./ reference.js'); рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрджрд░реНрдн рдЪрд░ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╢рд╛рдпрдж рд╕рдореНрдорд╛рдирд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ редред

(@Gaeron)

@ рдХреНрдпреВрдмрд░реНрдЯрд┐рди рдкреНрд░рд╕рдВрдЧ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐:

1) рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╡рд┐рдкрд░реАрдд рд░реА-рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдмрджрд▓ рдФрд░ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
2) рдпрд╣ рдорд╛рддрд╛-рдкрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдЕрддрд┐рджреЗрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдХреА рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ
3) рдпрд╣ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЬреЛ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

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

рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╕рд┐рдВрдЧрд▓рдЯрди рд╕рдВрджрд░реНрдн рд╡рд┐рдЪрд╛рд░ рдмреБрд░рд╛ рд╣реИ :)

рднреНрд░рд╛рдордХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЙрдХреНрд╕ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рдЖрдордВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд╣рд╛рд░рд╛ рдХреА рддрд░рд╣ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдк рдЙрдирд╕реЗ рдкреВрдЫрдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ?

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

'use strict';

    var React = require('react-native');
    var { View,
          StyleSheet,
          TouchableHighlight,
          } = React;

    var DrawerLayout = require('react-native-drawer-layout');
    var DrawerScreen = require('./DrawerScreen');
    var DrawerMenu = require('./DrawerMenu');

    var DrawerLayoutExample = React.createClass({

      render: function() {
        var navigationView = (
          <View >
               <DrawerMenu/>
          </View>
        );

        return (
          <DrawerLayout
            onDrawerSlide={(e) => this.setState({drawerSlideOutput: JSON.stringify(e.nativeEvent)})}
            onDrawerStateChanged={(e) => this.setState({drawerStateChangedOutput: JSON.stringify(e)})}
            drawerWidth={200}
            ref={(drawer) => { return this.drawer = drawer  }}
            keyboardDismissMode="on-drag"
            renderNavigationView={() => navigationView}>
            <View style={styles.container}>
 // Here is content component for drawer, need to refer drawer reference
            <DrawerScreen ></DrawerScreen>
            </View>
          </DrawerLayout>
        );
      }
    });

    var styles = StyleSheet.create({
      container: {
        alignItems: 'center',
        justifyContent: 'center',
        flex: 1,
        flexDirection: 'column',
      },
     });

    module.exports = DrawerLayoutExample;

DrawerScreen.js

'use strict';
var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Dimensions,
  Image,
  TouchableHighlight,
  TextInput,
} = React;

var deviceWidth = Dimensions.get('window').width;

var DrawerScreen = React.createClass({


  render: function() {
    return (

        <View style={styles.container}>

          <Text style={styles.welcome}>Content!</Text>

          <TouchableHighlight onPress={() => this.state.openDrawer()}>
            <Text>Open drawer</Text>
          </TouchableHighlight>
          <TextInput style={styles.inputField} />
        </View>
    );
  },

});

var styles = StyleSheet.create({
   container: {
      alignItems: 'center',
      justifyContent: 'center',
      flex: 1,
          flexDirection: 'column',
    },
    inputField: {
      backgroundColor: '#F2F2F2',
      height: 40,
    },
});

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

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

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

@ рдпрд╣ рдПрдХ рдРрд╕реА рдЪреАрдЬрд╝ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд┐рд░реНрдл рдХрдВрдкреЛрдиреЗрдВрдЯрдбрд┐рдорд╛рдЙрдВрдЯ рдкрд░ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

@Kuburtin рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ, рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдЕрд▓рдЧ рднрд╛рд╖рд╛ рдЪреБрди рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ ...

рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк ComponentsDidMount рдореЗрдВ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ, рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░реВрдВрдЧрд╛

рдореИрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рднреА рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХ рдХреЛ рди рджреЛрд╣рд░рд╛рдПрдВ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╣реЛ
redux actioncreator рдЬреЛ рдкреВрд░реЗ рдПрдкреЛ рдХреЗ рд▓рд┐рдП рд╕реБрдирддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рднреА ...
рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдкрд░ State.responsive.isPhone / isPrerender / screenwidth рдЖрджрд┐ рд╣реИрдВред
рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░реЗрд╖рдг рдХрд░рддрд╛ рд╣реВрдВред рд╕рд╛рдлред

рд╢реБрдХреНрд░ рдкрд░, 29 рдЕрдкреНрд░реИрд▓, 2016, 4:52 рдмрдЬреЗ рд╕рд┐рд░рд┐рд▓ рдСрдмрд░реНрдЯрд┐рди рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЗрд░реЗ рд▓рд┐рдП рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдШрдЯрдХрдбрд╛рдЗрдорд╛рдЙрдВрдЯ рдореЗрдВ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ
рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/facebook/react/issues/2517#issuecomment -215742327

Woutред
(рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ, рдмрд╣рд╛рдирд╛)

рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдкреЗрдбрд╝ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреБрдВрдЬреА = {рд▓реИрдВрдЧ} рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рднрд╛рд╖рд╛рдУрдВред рдПрдирд┐рдореЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

рд╢реБрдХреНрд░ рдкрд░, рдЕрдкреНрд░реИрд▓ 29, 2016, 6:07 рдЕрдкрд░рд╛рд╣реНрди Wout Mertens woutред [email protected] рдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ:

рдореИрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рднреА рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХ рдХреЛ рди рджреЛрд╣рд░рд╛рдПрдВ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╣реЛ
redux actioncreator рдЬреЛ рдкреВрд░реЗ рдПрдкреЛ рдХреЗ рд▓рд┐рдП рд╕реБрдирддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рднреА ...
рдореЗрд░реЗ рдкрд╛рд╕ State.responsive.isPhone / isPrerender / screenwidth рдЖрджрд┐ рдСрди рд╣реИрдВ
рд╕рд░реНрд╡рд░, рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЗрд╖рдгред рд╕рд╛рдлред

рд╢реБрдХреНрд░ рдкрд░, 29 рдЕрдкреНрд░реИрд▓, 2016, 4:52 рдмрдЬреЗ рд╕рд┐рд░рд┐рд▓ рдСрдмрд░реНрдЯрд┐рди рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЗрд░реЗ рд▓рд┐рдП рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдШрдЯрдХрдбрд╛рдЗрдорд╛рдЙрдВрдЯ рдореЗрдВ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ
рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/facebook/react/issues/2517#issuecomment -215742327

Woutред
(рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ, рдмрд╣рд╛рдирд╛)

Woutред
(рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ, рдмрд╣рд╛рдирд╛)

рдореИрдВ рдЖрдк рдХреА рддрд░рд╣ рдерд╛, рд▓реЗрдХрд┐рди рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛рдУрдВ рдХрд╛ рдЖрдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╕реНрддрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рд╢реНрд░реЛрддрд╛рдУрдВ рдХрд╛ рд╣реЛрдирд╛ рдмреБрд░рд╛ рд╣реИ

рдиреЛрдиреЛ, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рд╕рд╕реНрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ
рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ this.context.isPhone рд▓рд┐рдЦрдирд╛ред

рд╢реБрдХреНрд░ рдкрд░, 29 рдЕрдкреНрд░реИрд▓, 2016 рдХреЛ рд╢рд╛рдо 6:38 рдмрдЬреЗ рд╕рд┐рд░рд┐рд▓ рдСрдмрд░реНрдЯрд┐рди рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдореИрдВ рдЖрдк рдЬреИрд╕рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдШрдЯрдирд╛ рд╢реНрд░реЛрддрд╛рдУрдВ рдХрд╛ рдЖрдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╕реНрддрд╛ рд╣реИ, рдореИрдВ рдирд╣реАрдВ
рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рддрд░рд╣ рдХреЗ рдХрдИ рд╢реНрд░реЛрддрд╛рдУрдВ рдХрд╛ рд╣реЛрдирд╛ рдмреБрд░рд╛ рд╣реИ

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/facebook/react/issues/2517#issuecomment -215797819

Woutред
(рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ, рдмрд╣рд╛рдирд╛)

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-redux рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рд╕реЗ "рдХреЛрдИ рдЕрджреНрдпрддрди рдирд╣реАрдВ" рд╕рдВрдХреЗрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ === рдЕрднрд┐рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╢реЙрд░реНрдЯрдХрдЯ рддрднреА рд╣рд┐рдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕рдВрджрд░реНрдн === рд╕рд╛рде рд╣реА рд╣реЛ, рдЬрд┐рд╕реЗ рдШрдЯрдХ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ред рд╢рд╛рдпрдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд┐рдбрдХреНрд╕ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╡рд╛рд▓ред

Redux рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, https://github.com/reactjs/react-router/issues/470 рдФрд░ PRs рдореЗрдВ рдирд┐рд░рдВрддрд░ рдЪрд░реНрдЪрд╛ рджреЗрдЦреЗрдВред

рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ https://github.com/reactjs/react-router/issues/3484 рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЖрд╕рд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдХрдард┐рди рд╣реИред

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

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

рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рдмреАрдЪ рдпрд╣ рдХрдо рд╕реЗ рдХрдо _somewhat_ рдЬреЗрдиреЗрд░рд┐рдХ рд╣реИ ... рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣рдо рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ at

рд╣рд╛рдБ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛: рдкреА, рд╕рд┐рд░реНрдл рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдЕрднреА рднреА рдЙрдк-рдЕрдкрдирд╛рдиреЗ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдирд╣реАрдВ рд╣реИ

@jquense рдмреАрдЪ рдореЗрдВ рдШрдЯрдХ рдирд╣реАрдВ contextTypes рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреА рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рдкреНрд░рддрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП childContextTypes getChildContext() рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬ

@DarylCantrell рдШрдЯрдХреЛрдВ рдХреЛ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдСрдкреНрдЯ-рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреВрд░реЗ рд╕рдВрджрд░реНрдн рдереЛрдХ рдХреЛ рдПрдХ рдШрдЯрдХ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП contextTypes рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

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

@ 1000 рд╣рд░реНрдЯреНрдЬ рдЬрд╝рд░реВрд░, рд▓реЗрдХрд┐рди рд╡рд╣ "рд╕рдВрджрд░реНрдн рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЧреБрдЬрд░рддрд╛ рд╣реИ"ред рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЖрдкрдХреЛ "рд╕рдВрдкреВрд░реНрдг" рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдЖрдк рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред

@DarylCantrell рд╡реВрдкреНрд╕, рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рдЧрд▓рдд рдмрддрд╛рдпрд╛ред

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рд╣реИ: # 7213

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

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

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

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рдкреИрдЪ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рджреМрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ, рд░реЗрдбрд┐рдпрдо рдФрд░ рдХреБрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдХрд┐рд╕реА рднреА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛

рдирдорд╕реНрдХрд╛рд░ @bvella , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдпрд╣ рдЕрдиреБрд░реЛрдз рд╣реИ: # 7213, 7212 рдирд╣реАрдВред

@DarylCantrell рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдзрдиреНрдпрд╡рд╛рдж

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/facebook/react/pull/7213 / https://github.com/facebook/react/pull/7225 , рдПрдХ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

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

рд╕рдВрджрд░реНрднрдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗрд╡рд▓ рдкреНрд░реЛрдкрд░рд╛рдЗрдЯреНрд╕ рдХреА рддрд░рд╣ рд╣реА рд╕рддреНрдпрд╛рдкрди рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдлрд┐рд░ рд╕реЗ, рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рдХрд╛ рдХрд╛рд░рдг рд╣реИ
(рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░рд┐рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕рднреА рд╕рдВрджрд░реНрдн рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЫрд┐рдкрд╛рддрд╛ рд╣реИ)

рдореИрдВрдиреЗ https://github.com/facebook/react/pull/7225#issuecomment -276618328 рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реБрдП рдХрд╣рд╛ рдХрд┐ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрд╕ рд╕рдм рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ sCU рдХреЗрд╡рд▓ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдШрдЯрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? ; рдЗрд╕рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдмрдЪреНрдЪреЛрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдХреНрдпрд╛ рдЕрднреА рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЗрд╕ рд╕реВрддреНрд░ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред
рд╣рдо рд╕рднреА рдРрдкреНрд╕ рдХреЛ рдзреАрдорд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд░реНрддрдорд╛рди API рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬрд┐рд╕реЗ рд╣рдо :-) рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

рдЪрд░реНрдЪрд╛ рджреЗрдЦреЗрдВ: https://github.com/reactjs/rfcs/pull/2

@acdlite рдиреЗ рдирдП рд╕рдВрджрд░реНрдн API: https://github.com/facebook/react/pull/11818 рдХреЗ рд╕рд╛рде рдПрдХ рдкреАрдЖрд░ рдЙрддрд╛рд░рд╛

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

рдирдпрд╛ рдПрдкреАрдЖрдИ рдЕрдЧрд▓реЗ рдорд╛рдореВрд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 16.x рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдФрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реЛрдЧрд╛ред

@gaearon рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рд╕реБрдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди: рдЖрдк рд▓реЛрдЧ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдЖрдкрдХреЗ рдХрд╛рдо рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред ЁЯН║

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

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

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

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

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

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

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