React: рдХрдВрдкреЛрдиреЗрдВрдЯрдбрд┐рдбрд░рд┐рд╕реАрд╡рдкреНрд░реЙрдкреНрд╕ рдХреГрдкрдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдлрд╝рд░ре░ 2015  ┬╖  94рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react

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

рдиреНрдпреВ рд╣реБрдХ рд╕реЗ рдкрд╣рд▓реЗ

componentWillMount() {
  this.setup(this.props.id);
}

componentWillReceiveProps(next) {
  this.setup(next.id);
}

setup(id) {
  UserActions.load(id);
}

рдиреНрдпреВ рд╣реБрдХ рдХреЗ рдмрд╛рдж

componentWillMount() {
  this.setup();
}

componentDidReceiveProps() {
  this.setup();
}

setup() {
  UserActions.load(this.props.id);
}

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

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

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

@syranide рдореБрд╕реАрдмрдд рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╕реЗрдЯрдЕрдк рдХреЛ рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░реЙрдкреНрд╕ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ...

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

рдХреНрдпреЛрдВ рдирд╣реАрдВ setup(props) ?

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

setup(props) {
  props = props || this.props
  UserActions.load(props.id)
}

@syranide рдореБрд╕реАрдмрдд рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╕реЗрдЯрдЕрдк рдХреЛ рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░реЙрдкреНрд╕ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ...

+1 рд╡рд░реНрддрдорд╛рди рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдРрдк рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рддрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдорд╛рдирдХреАрдХреГрдд рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред ComponentWillReceiveProps рдХреЗ рдЕрдВрджрд░ this.props рдкрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рдПрдХ рдЭреБрдВрдб рдХреЛ рдЬрд▓рддреЗ рджреЗрдЦрд╛ рдЧрдпрд╛, рдпрд╣ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИред

+1, рдореБрдЭреЗ рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рднреА рд▓рдЧрддрд╛ рд╣реИред

рдЕрдм рдпрд╣ рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред

+1, рдореИрдВ рдЦреБрдж рдХреЛ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реБрдП рднреА рдкрд╛ рд░рд╣рд╛ рд╣реВрдВред рдКрдкрд░ @insin рдХреЗ рд╕рдорд╛рди рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ

setup(props = this.props) {
  doSomething(props);
}

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

+1

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ this.props рдФрд░ this.state _always_ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред componentDidReceiveProps рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрд╕ рдмрд╛рдзрд╛ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд░реЗрдВрдбрд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд╛рд░, рдпрджрд┐ рдЖрдк componentWillReceiveProps рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╛ рддреЛ рдПрдХ рдЙрдЪреНрдЪ рдСрд░реНрдбрд░ рдШрдЯрдХ рд▓рд╛ рд░рд┐рд▓реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ , рдпрд╛ observe рд╣реБрдХ рдЬреИрд╕рд╛ рдХреБрдЫ

+1
рд╕рд╛рде рд╣реА, рдЖрдк componentDidReceiveProps рдХреЛ this.props рдпрд╛ this.state рдмрджрд▓реЗ рдмрд┐рдирд╛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЗрдирд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рджреВрд╕рд░реЗ рд░реЗрдВрдбрд░ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рднреАрддрд░ рдкреНрд░реЙрдкреНрд╕ рдпрд╛ рд╕реНрдЯреЗрдЯ рдХреЛ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдкреИрд░ рдореЗрдВ рдЧреЛрд▓реА рдорд╛рд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреАрд╡рдирдЪрдХреНрд░ рдореЗрдВ рд╣рд░ рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдпрд╣реА рд╕реНрдерд┐рддрд┐ рд╣реИред

+1

рдЬрдм shouldComponentUpdate false рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдирдП рдкреНрд░реЙрдкреНрд╕ рдЗрд╡реЗрдВрдЯ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ componentDidUpdate рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

+1

+1

componentWillMount рдФрд░ componentWillUpdate @iammerrick . рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛

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

componentWillReceiveProps рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?

+1

+1 рдпрд╣ DRY рдХреЛрдб рдФрд░ рддрд░реНрдХ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

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

componentDidReceiveProps() {
  UserActions.load(this.props.id);
}

рд╡рд┐рдЪрд╛рд░?

componentWillReceiveProps() {
  setTimeout(()=> {
    if(this.isMounted()) {
      this.componentDidReceiveProps();
    }
  });
}
componentDidReceiveProps() {
  UserActions.load(this.props.id);
}

рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?

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

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

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

+1 рдХреГрдкрдпрд╛ред рдмрд╣реБрдд рдмрджрд╕реВрд░рддред

рдирд╛рд╣ рдореИрдВ рдЕрдЪреНрдЫрд╛ рд╣реВрдБред рдмреЗрд╣рддрд░ рдЙрдкрд╛рдп рд╣реИрдВред

+1

componentDidReceiveProps() рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ: рдЗрд╕реЗ render() рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ @iammerrick рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ) рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рд▓реЛрдб/рдЯреНрд░рд┐рдЧрд░/рдЖрджрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЪреАрдЬ рд╣реИ: рдЖрдк рдХреБрдЫ рдЧрд▓рдд рдХрд░рддреЗ рд╣реИрдВред

рдЬрдм рдЖрдк рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдХрд░рддреЗ рд╣реИрдВ

setup(id) {
    UserActions.load(id);
}

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

render() {
    var actions = UserActions.load(id);
    if (actions) // render
    else // show spinner or return null, etc.
}

UserActions.load = function(id) {
    if (data) return data;
    else // request the data, emit change on success
}

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

рддреЛ рдореБрдЭреЗ рдмрддрд╛рдУ, @ рдореБрдЭреЗ-рдЖрдВрджреНрд░реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ componentWillUpdate рдФрд░ componentWillReceiveProps рджреЛрдиреЛрдВ рдХреНрдпреЛрдВ рд╣реИрдВ?

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреА рдкреВрд░реНрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЛрдиреЛрдВ рд╕рд╣рд╛рдпрдХ рд╣реИрдВред рдЬреИрд╕реЗ рд╡реЗ рджреЛрдиреЛрдВ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ, render рдХрд╛рд▓реНрдкрдирд┐рдХ componentDidReceiveProps рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдирдП рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ; рд╕рд╛рде рд╣реА, рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реЗ рдкреНрд░реЙрдкреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рджреА рдЬрд╛рддреА рд╣реИред

рдкрд┐рдЫрд▓реЗ рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдбреЗрдЯрд╛ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛; рдпрд╣ рд╕рд╣рд╛рд░рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╢рд░реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рд╡реЗ рдмрджрд▓ рдЧрдП рд╣реИрдВред

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

рд╢рд╛рдпрдж рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ ...

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рд╣реИрдВ:

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

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

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

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

@robyoder , рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрддреНрддрд░ рдХреНрдпреЛрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ componentWillUpdate рдФрд░ componentDidReceiveProps рджреЛрдиреЛрдВ рд╣реИрдВ, рдЙрдирдХреЗ рдмреАрдЪ рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИред рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рд░реВрдк рд╕реЗ componentWill рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

| | рд░рд╛рдЬреНрдп рдмрджрд▓ рдЧрдпрд╛ рд╣реИ | рдШрдЯрдХ рдЕрджреНрдпрддрди рдирд╣реАрдВ рд╣реБрдЖ |
| --- | --- | --- |
| рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓рдЕрдкрдбреЗрдЯ () | рд╣рд╛рдБ | рдирд╣реАрдВ |
| рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓ рд░рд┐рд╕реАрд╡рдкреНрд░реЙрдкреНрд╕ () | рдирд╣реАрдВ | рд╣рд╛рдБ |

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЬреАрд╡рди рдЪрдХреНрд░ рдмрд┐рдВрджреБ/рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдЕрд▓рдЧ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐ componentDidReceiveProps() рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХрд┐рд╕реА рднреА рдШрдЯрдХ рд╕реНрдерд┐рддрд┐ рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ componentWillReceiveProps() рдирд╣реАрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдорд╛рдореВрд▓реА рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧреА рдпрд╛ рдЖрд╕рд╛рди рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ - рдпрд╣ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд░реАрдпрддрд╛ рд╣реИ, рддрдХрдиреАрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ред рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИред рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рддрд░реНрдХ-рд╡рд┐рддрд░реНрдХ рдХрд░рдирд╛ рдХреБрд░реВрдк рд╣реИ - рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдпрд╣ рднреА рдХрд╣рд╛ рдХрд┐ "[рдХреБрд░реВрдкрддрд╛] рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рдХреА рдирдЬрд╝рд░ рдореЗрдВ рд╣реИ"ред рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд╕реНрд╡рдпрдВ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рд╣реИред

@ рдореБрдЭреЗ-рдЖрдВрджреНрд░реЗ рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдореБрдЭреЗ (@kmalakoff) рдФрд░ @robyoder рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред рдпрд╛ рд╢рд╛рдпрдж рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдЕрд╡рд╕рд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдКрдВрдЧрд╛...

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

рдЖрдЗрдП рдЬрд╛рдирддреЗ рд╣реИрдВ рдЕрднреНрдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ....

рдЖрдЗрдП рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ +1-ed рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ componentDidReceiveProps рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ API рд╕рддрд╣ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред

рддрд╛рд▓рд┐рдХрд╛ рдФрд░ 3 рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдПрдкреАрдЖрдИ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдФрд░ / рдпрд╛ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рд╡реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рд╣реИ (рд╢рд╛рдпрдж рдЗрд╕реЗ рдХрдо рдХрд░рдирд╛/рд╕рд░рд▓ рдмрдирд╛рдирд╛ рднреА) )?

@kmalakoff , рдЖрдк рдЬрд┐рди 3 рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдм рдЖрдк рдЙрдирдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдЦрд░рд╛рдм рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИрдВред

рдЖрдк рдЬрд┐рд╕ рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЗ рддрд░реАрдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВред рдЦреИрд░, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИ - рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреА рдкреВрд░реНрддрд┐ рдХрд░рддреЗ рд╣реИрдВред componentWillReceiveProps рд╕рд╣рд╛рд░рд╛ рд▓реЗрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдЬрдм рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рддрдм рдЪрдВрджреНрд░рдорд╛ рднрд░рд╛ рд╣реБрдЖ рдерд╛ - рдмрд▓реНрдХрд┐ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЙрди рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬреЛ рдЕрднреА рддрдХ рдШрдЯрдХ рдХреЛ рдирд╣реАрдВ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред props рдХреЗрд╡рд▓ рдЙрди рддрд░реАрдХреЛрдВ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡реЗ (рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) this.props рд╕реЗ рднрд┐рдиреНрди рд╣реЛрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ, рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВред
рд╕рдорд╕реНрдпрд╛ # 3 рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдпрд╣ рддрдп рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рдХрд┐рд╕ рдХреЙрд▓рдмреИрдХ/рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЦреИрд░, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ state рдФрд░ this.state , props рдФрд░ this.props рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдорд╛рди (рдЕрд░реНрдерд╣реАрди рдкрдврд╝реЗрдВ) рд╣реИрдВ, рддреЛ рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЙрд▓рдЭ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдХрд▓реНрдкред
рд╕рдорд╕реНрдпрд╛ # 2 рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ ... рдареАрдХ рд╣реИ, рд░рд┐рдПрдХреНрдЯ рдПрдХ рдкрддрд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ - рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╕реБрдВрджрд░, рдЖрд╕рд╛рди рдФрд░ рд╕рдЦреНрдд рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдРрд╕рд╛ рдЖрд╡рд░рдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рджреЗ рдФрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рджрд┐рди рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░ рджреЗ - рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ? рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ npm рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ рдЬреЛ react рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рдХрд╛рдо рд╣реЛ рдЧрдпрд╛ред

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

рдФрд░ рдПрдХ рдФрд░ рдмрд╛рдд...
рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдЖрдкрдХреЛ рдЙрди рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЖрдк рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╣реА рдХрдо рдХрд░рддреЗ рд╣реИрдВред getInitialState , componentWillMount , componentWillUnmount 99% рд╕рдордп рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдмрдбрд╝рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдРрдк рд╣реИ, componentWillReceiveProps рдкреВрд░реЗ рдРрдк рдореЗрдВ рджреЛ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рд╡рд░рдг (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрдврд╝реЗрдВ) рдЕрдкреВрд░реНрдг рд╣реИ - рдХреБрдЫ "рд╕реНрдЯреЗрдЯрдлреБрд▓-рдЗрди-рд╣реА" рдЪреАрдЬреЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдирд╛ рдЬреИрд╕реЗ рдХрд┐ scrollTop рдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рдХрдВрдкреНрдпреВрдЯреЗрд╢рдВрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ render s props рд╕рдВрдХреНрд░рдордгреЛрдВ рдФрд░ DOM рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмреАрдЪ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ "рд╕рд╛рдорд╛рдиреНрдп" рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ props рд╕рдВрдХреНрд░рдордг рдХрдм рд╣реЛрддрд╛ рд╣реИред

@ рдореБрдЭреЗ-рдЖрдВрджреНрд░реЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдореЗрдВ рд╕реБрдзрд╛рд░/рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИред рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЗрд╕реЗ +1-ed рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

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

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

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

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

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

рдХреНрдпрд╛ рдХреЛрдИ рдПрдкреАрдЖрдИ рдмрджрд▓рдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рддреБрд▓рдирд╛рддреНрдордХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ (рдШрдЯрдХ рдЬреЛрдбрд╝реЗрдВDidReceiveProps рдмрдирд╛рдо рдорд░реНрдЬ / рдПрдкреАрдЖрдИ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдПрдВ рдмрдирд╛рдо рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ)

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

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдХреНрдпрд╛ рд╣реЛрдЧрд╛ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдореЗрд░реЗ рд▓рд┐рдП) рдпрд╣ рд╕рдордЭрдирд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЗрд╕ рдЬреАрд╡рди рдЪрдХреНрд░ рдкрджреНрдзрддрд┐ рдХреЛ рдХреНрдпреЛрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕ рдЬреАрд╡рдирдЪрдХреНрд░ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? https://github.com/facebook/react/issues/3279#issuecomment -163875454 рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рд░реЗрдВрдбрд░ рдХреЗ рдмрдЬрд╛рдп рдХреЛрдИ UserActions.load(id); componentDidReceiveProps рдХреЗ рднреАрддрд░ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ (рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдПрдХ рдХрд╛рд░рдг, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИрдВ)? рдХреНрдпрд╛ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛-рд▓реЛрдб рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ?

@jimfb рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ componentDidReceiveProps рд╡рд╣реА рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпрд╛рдВ рдЕрдиреБрдЪрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рдЦреБрд╢реА-рдЦреБрд╢реА рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдБрдЧрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ react-router рдореЗрдВ рдПрдХ рдорд╛рд░реНрдЧ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

    <Route path="/profile/:username" component={ProfilePage} />

рдореБрдЭреЗ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрдд рд╕реЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ componentDidMount рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдореИрдВрдиреЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ componentDidReceiveProps рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдЕрднреА рддрдХ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдФрд░ componentWillReceiveProps рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдкреВрд░реНрддрд┐ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рд╕рдВрдХреЗрдд рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдореЗрд░рд╛ рдЭреБрдХрд╛рд╡ рдпрд╣ рд╣реИ рдХрд┐ componentDidReceiveProps рд╡рд╣реА рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдПред

@ shea256 рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ componentWillReceiveProps рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдкреВрд░реНрддрд┐ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

@ shea256 рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЗ рдШрдЯрдХ рдХреЛ HTTP рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЙрд╕ http рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХреНрдпрд╛ рд╣реИ? рдпрджрд┐ рдбреЗрдЯрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдХреЙрд▓рдмреИрдХ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдкрд░ рдЖрдк рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

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

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

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

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

@jimfb рдореБрдЭреЗ routeParam рдореЗрдВ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ componentWillReceiveProps рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдпрд╣ рдирд╣реАрдВ рд╣реИред

рдмрд╛рд╣рд░реА рд╕реНрд░реЛрдд рд╕реЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдбреЗрдЯрд╛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИ)ред

рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЛ рд░реЗрдВрдбрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдереЛрдбрд╝рд╛ рдЧрдВрджрд╛ рд▓рдЧрддрд╛ рд╣реИ:

constructor(props) {
  super(props)

  this.state = {
    id: this.props.routeParams.id,
    profile: {}
  }
}

componentDidMount() {
  this.getProfile(this.state.id)
}

render() {
  if (this.props.routeParams.id !== this.state.id) {
    this.getProfile(this.props.routeParams.id)
  }

  return (
    <div>
      <div className="name">
       {this.state.profile.name}
      </div>
    </div>
  )
}

@ рдЧреНрд░рд╛рд╕рд┐рдХ рдиреЗ рд▓рд┐рдЦрд╛:

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

рд╣рд╛рдБ, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИред

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

рдЦрд╝реВрдм рдХрд╣рд╛ рд╣реИред

@ shea256 рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп componentWillReceiveProps рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

constructor(props) {
  super(props)

  this.state = {
    id: this.props.routeParams.id,
    profile: {}
  }
}

componentDidMount() {
  this.getProfile(this.state.id)
}

componentWillReceiveProps(nextProps) {
  let { id } = nextProps.params
  if(id !== this.state.id) {
    this.getProfile(id, (profile) => {
      this.setState({ id: id, profile: profile })
    })
  }
}

render() {
  return (
    <div>
      <div className="name">
       {this.state.profile.name}
      </div>
    </div>
  )
}

@ рдЧреНрд░рд╛рд╕рд┐рдХ рдиреЗ рд▓рд┐рдЦрд╛:

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

@ рдЧреНрд░рд╛рд╕рд┐рдХ рдиреЗ рд▓рд┐рдЦрд╛:

рд░реЗрдВрдбрд░ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдк рд╣реИ, рдФрд░ рд╡реИрд╕реЗ рднреА, рд░реЗрдВрдбрд░ рд╕реЗ рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рдПрдХ рдирд╣реАрдВ-рдирд╣реАрдВ рд╣реИред

рдмрд╕ рдпрд╣рд╛рдВ рд╕реНрдкрд┐рдЯрдмреЙрд▓ рдХрд░рдирд╛: рдпрджрд┐ componentDidUpdate рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ (рдмрд╛рдж рдХреЗ рд░реЗрдВрдбрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдкрд░ рд▓рд╛рдЧреВ рд╣реЛ рдЧрдпрд╛, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛? рдЖрдк рдЬрд╛рдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░реЙрдкреНрд╕ рдмрджрд▓ рдЧрдП рд╣реИрдВ рдФрд░ рдХреНрдпрд╛ рдЖрдкрдХрд╛ рд╕рд╛рд░рд╛ рдбреЗрдЯрд╛ componentDidUpdate рдореЗрдВ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╣реИ рдирд╛? рдФрд░ рд░реЗрдВрдбрд░ рдореЗрдВ, рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЖрдк рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░ рд░рд╣реЗ рдереЗ рдпрджрд┐ this.state.profileName != this.props.profileName ред рдХреНрдпрд╛ рд╡рд╣ рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛?


рдХреНрдпрд╛ рдРрд╕реЗ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ?

@calmdev рдПрдЪрдПрдо, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЖрдк рд╕рд╣реА рд╣реИрдВред рдореИрдВ рдЗрд╕реЗ рдЖрдЬрдорд╛рдЙрдВрдЧрд╛ред

@jimfb рд╢рд╛рдпрдж, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ componentDidUpdate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдФрд░ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдБред

рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ this.state.profileName != this.props.profileName рдкрд░ рдПрдХ рдЪреЗрдХ рдХрд░ рд╕рдХрддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдПрдХ рд╣реИрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдпрджрд┐ componentWillReceiveProps(nextProps) рдХрд╛рдо рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдмрд╕ рдпрд╣реА рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдЕрдм, componentDidMount рд╕рд╛рде рд╕рдорд░реВрдкрддрд╛ рдХреА рдХрдореА рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддреА рд╣реИред рдХреНрдпрд╛ рдореИрдВ componentWillMount рдХреЗ рдмрджрд▓реЗ componentDidMount рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореБрдЭреЗ рдмрд╕ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреВрд░рд╛ рдЬреАрд╡рдирдЪрдХреНрд░ рд╕рд╛рдл рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@ shea256 , рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ ... рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП README рдкрдврд╝рд╛ рд╣реИ?
рдореИрдВ рдпрд╣ рдХрд╣рдиреЗ рдореЗрдВ рд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЛ рдЙрд╕ рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рд╕реЗ рдЖрдк рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ... рдмреЗрддреБрдХрд╛ред
"рдХреНрдпрд╛ рдореИрдВ componentWillMount рдХреЗ рдмрджрд▓реЗ componentDidMount рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?"
рдирд╣реАрдВ, рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рд░реАрдбрдореА рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, componentWillMount рдХреЛ рдЖрдкрдХреЗ рдШрдЯрдХ рдХреЛ рдбреАрдУрдПрдо рдФрд░ componentDidMount - рдЙрд╕рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд╕реЗ рдЖрдкрдХрд╛ рдХреЛрдб рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдВ 2 рддрд░реАрдХреЗ рд╣реИрдВ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╕реМрдВрджрд░реНрдпрд╢рд╛рд╕реНрддреНрд░ рдирд╣реАрдВ рд╣реИ ("рд╕рдорд░реВрдкрддрд╛" рдкрдврд╝реЗрдВ)ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рддреИрдпрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рджреВрд╕рд░реА рдкрд╣рд▓реА рд░реЗрдВрдбрд░ рдХреЗ рдмрд╛рдж рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреАрдУрдПрдо рдкреВрдЫрддрд╛рдЫ/рд╣реЗрд░рдлреЗрд░ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдПрдХ рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЖрдХрд░реНрд╖рдХ рд╣реИред рдЖрдо рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдбреАрдУрдПрдо рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
"рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ this.state.profileName != this.props.profileName рдкрд░ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдПрдХ рд╣реИрдХ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛?"
рд╣рд╛рдВ, рдЖрдкрдХрд╛ рдкреВрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рд╣реИрдХ рд╣реИред рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕рдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ componentDidReceiveProps рдЧрд╛рд░рдВрдЯреА рджреЗрдЧрд╛ рдХрд┐ props рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдЬрдм рддрдХ рдЖрдк shouldComponentUpdate рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рддрдм рддрдХ рдХреБрдЫ рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬреИрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

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

рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред рдЖрдк рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ-рдЙрдиреНрдореБрдЦ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕рд┐рдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдПрдХ рджреГрд╢реНрдп рд╕рд╣рд╛рд░рд╛, рд░рд╛рдЬреНрдп рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╣реИред рдЬреИрд╕реЗ function(state, props) { return // whatever you've computed from it } (рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ - рдЕрдиреНрдпрдерд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддреА)ред рд╣рд╛рд▓рд╛рдВрдХрд┐ 0.14 рд╣рдореЗрдВ рд╢реБрджреНрдз рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдлрд╝рдВрдХреНрд╢рди render() ред

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

// profile-view.js

var React = require('react');

module.exports = React.createClass({
    contextTypes: {
        app: React.PropTypes.object.isRequired
        // another option is var app = require('app')
        // or even var profiles = require('stores/profiles')
    },
    componentWillMount() {
        var {app} = this.context; // another option is to require('app')
        app.profiles.addListener('change', this.onStoreChange);
    },
    componentWillUnmount() {
        var {app} = this.context; // another option is to require('app')
        app.profiles.removeChangeListener('change', this.onStoreChange);
    },
    onStoreChange() {
        this.forceUpdate();
    },
    render() {
        var {app} = this.context;
        var profile = app.profiles.read(this.props.routeParams.id);
        if (profile) { // profile's been loaded
            return <div>{profile.name}</div>;
        } else { // not yet
            return <div>Loading...</div>;
        }
    }
});

// profiles-store.js
// app.profiles = new Profiles() on app initialization

var EventEmitter = require('events');
var {inherits} = require('util');

module.exports = Profiles;

function Profiles() {
    this.profiles = {};
}

inherits(Profiles, EventEmitter);

Profiles.prototype.read = function(id) {
    var profile = this.profiles[id];
    if (!profile) {
        $.get(`profiles/${id}`).then(profile => {
            this.profiles[id] = profile;
            this.emit('change');
        });
    }
    return profile;
};

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

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

@ shea256 this.state.profileName != this.props.profileName рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ (рдШрдЯрдХ рдХреНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реИ) рдорд╛рддрд╛-рдкрд┐рддрд╛ рдШрдЯрдХ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рд▓рдЧрднрдЧ "рдШрдЯрдХ рдЕрджреНрдпрддрди рд╣реЛ рд░рд╣рд╛ рд╣реИ" рдпрд╛ "рдШрдЯрдХ рдЕрджреНрдпрддрд┐рдд рд╣реИ" рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╣реИрдХреА рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдХрдо рд╕реЗ рдХрдо, "рдбреЗрдЯрд╛-рдЕрдкрдбреЗрдЯ рдЕрдиреБрд░реЛрдз рдХреЛ рдЖрдЧ рд▓рдЧрд╛рдирд╛ рдЬрдм рдкреНрд░реЛрдк рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдПрдХ рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рдХрд░рддрд╛ рд╣реИ" рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдХреА рдирд╣реАрдВ рд╣реИред

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

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

@ рдореА-рдЖрдВрджреНрд░реЗ рдпрд╣рд╛рдБ рд╕рд╣реА рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ; рд╡реЗ рдХреЗрд╡рд▓ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ _рд╢рд╛рдпрдж_ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЖрдк previous === next рдпрджрд┐ рдЖрдк http рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдпрд╣ рдзрд╛рд░рдгрд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдореВрд▓реНрдп рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬреАрд╡рдирдЪрдХреНрд░ рдкрджреНрдзрддрд┐ рдХреЛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@ рдореА-рдЖрдВрджреНрд░реЗ рдиреЗ рд▓рд┐рдЦрд╛:

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

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

рд╕рднреА: рдХреНрдпрд╛ componentDidReceiveProps рд▓рд┐рдП "рдкреНрд░реЛрдк рдЪреЗрдВрдЬ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ" рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ?

cc @grasick @iammerrick

@jimfb рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдХреЛрдб рдЦреЛрдЬрд╛ рдФрд░ рдореИрдВ рд░реЗрдВрдбрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдорд╣рдВрдЧреА-рд╕реЗ-рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП componentWillReceiveProps рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдорд╛рдорд▓рд╛ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрд╕реЗ рдкреНрд░реЙрдкреНрд╕ рдкрд╛рд╕ рдХрд░рдиреЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ рдХрд┐ рдХреЛрдб рдореЗрдВ this.props рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред

@jimfb рдиреЗ рд▓рд┐рдЦрд╛:

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

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

@jimfb рдиреЗ рд▓рд┐рдЦрд╛:

@ shea256 this.state.profileName != this.props.profileName рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ (рдШрдЯрдХ рдХреНрдпрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реИ) рдорд╛рддрд╛-рдкрд┐рддрд╛ рджреНрд╡рд╛рд░рд╛ рдШрдЯрдХ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд▓рдЧрднрдЧ "рдШрдЯрдХ рдЕрджреНрдпрддрди рд╣реЛ рд░рд╣рд╛ рд╣реИ" рдпрд╛ "рдШрдЯрдХ рдЕрджреНрдпрддрд┐рдд рд╣реИ" рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рд╣реИрдХреА рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдХрдо рд╕реЗ рдХрдо, "рдбреЗрдЯрд╛-рдЕрдкрдбреЗрдЯ рдЕрдиреБрд░реЛрдз рдХреЛ рдЖрдЧ рд▓рдЧрд╛рдирд╛ рдЬрдм рдкреНрд░реЛрдк рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдПрдХ рд╕реЗрдЯрд╕реНрдЯреЗрдЯ рдХрд░рддрд╛ рд╣реИ" рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдХреА рдирд╣реАрдВ рд╣реИред

рд╣рд╛рдБ, рдпрд╣ рдЙрдЪрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

@jimfb рдиреЗ рд▓рд┐рдЦрд╛:

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

рдореИрдВ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рд╕рд╣рдордд рд╣реВрдВред рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдХреНрдпреЛрдВ рд▓рдЧрд╛ рдХрд┐ componentDidReceiveProps рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

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

@jimfb рдиреЗ рд▓рд┐рдЦрд╛:

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

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

@jimfb рдиреЗ рд▓рд┐рдЦрд╛:

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

рд╢рд╛рдпрджред рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕реЛрдЪреВрдВрдЧрд╛ред

componentDidReceiveProps рдореЗрд░реЗ рдкрд╛рд╕ рдореМрдЬреВрдж рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рд╣реЛрдЧрд╛ред

рдореИрдВ ReactRouter рдФрд░ Flux рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬрдм рдореЗрд░реЗ рдШрдЯрдХ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдХрд┐рд╕реА рд╕реНрдЯреЛрд░ рд╕реЗ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдЬрдм рд╡рд╣ рд╕реНрдЯреЛрд░ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдИрд╡реЗрдВрдЯ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЙрд╕реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рд░рд╛рдЬреНрдп рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВред

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

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

this.updateItemState( nextProps );

updateItemState( props ) {
    props = props || this.props;

    this.setState( {
        item: this.getItemState( props )
    } );
}

getItemState( props ) {
    props = props || this.props;

    return this.ItemStore.get( props.params[ this.paramName ] );
}

рдмрд╕ рдмрди рдЬрд╛рдПрдЧрд╛

this.updateItemState();

updateItemState() {
    this.setState( {
        item: this.getItemState()
    } );
}

getItemState() {
    return this.ItemStore.get( this.props.params[ this.paramName ] );
}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

@ akinnee-gl et al: рдпрджрд┐ рдХрдВрдкреЛрдиреЗрдВрдЯрдбрд┐рдбрдЕрдкрдбреЗрдЯ рдЕрдкрдбреЗрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдЙрдВрдЯ рдХреЗ рдмрд╛рдж рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛?

@ akinnee-gl, рдпрджрд┐ рдЖрдк рдлреНрд▓рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд░рд╛рдЬреНрдп рдХреЛ рдХрд┐рд╕реА рд╕реНрдЯреЛрд░ рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЬрдм рддрдХ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд╕рдВрднрд╡ рди рд╣реЛ, рдЖрдкрдХреЛ рд░рд╛рдЬреНрдп рдХреЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рдлреНрд▓рдХреНрд╕ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ рддреЛ рд╡рд╣ рдЬрдЧрд╣ рд╣реА рд╕реНрдЯреЛрд░ рд╣реЛрддреА рд╣реИред рдЬрдм рд╕реНрдЯреЛрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХреЗрд╡рд▓ forceUpdate() рдФрд░ рдлрд┐рд░ render() рдЖрдк read() рдЕрдкрдиреЗ рд╕реНрдЯреЛрд░ рдореЗрдВред

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

рдХрднреА рдирд╣реАрдБред

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

    var item = this.props.store.read(this.props.id);
    return <div>{item.name}</div>;

рдпрд╣ рдЖрдкрдХрд╛ рдШрдЯрдХ рд╣реИ, рдФрд░ рдХреБрдЫ рдирд╣реАрдВред
рдлреНрд▓рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕ рдирд╛рдЯрдХ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрдЯреЛрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ/рдЕрдирдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

<FluxWrapper store={store} component={Component} id={this.props.routeParams.id} />

var FluxWrapper = React.createClass({
    componentWillMount() {
        this.props.store.addListener('change', this.onStoreChange);
    },
    componentWillUnmount() {
        this.props.store.removeListener('change', this.onStoreChange);
    },
    onStoreChange() {
        this.forceUpdate();
    },
    render() {
        var Component = this.props.component;
        return <Component {...this.props} />;
    }
});

var Component = React.createClass({
    render() {
        var item = this.props.store.read(this.props.id);
        return <div>{item.name}</div>;
    }
});

рджреЗрдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдареАрдХ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЗ рдШрдЯрдХ рдХрд┐рддрдиреЗ рдЫреЛрдЯреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

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

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

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

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

@ akinnee-gl componentWillReceiveProps рдХреЛ рдкреНрд░реЙрдкреНрд╕ рдмрджрд▓рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ рднреА рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ: https://github.com/facebook/react/issues/3279#issuecomment-164713518), рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрд╡рд╢реНрдп рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдкреНрд░реЛрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдмрджрд▓ рдЧрдпрд╛ рд╣реИ (рдЪрд╛рд╣реЗ рдЖрдк рдХрд┐рд╕ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЛ рдЪреБрдиреЗрдВ)ред рд╕рд╛рде рд╣реА, рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдбреЗрдЯрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдЧрд▓реЗ рдИрд╡реЗрдВрдЯ рд▓реВрдк рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдкрдХрд╛ рдХреЙрд▓рдмреИрдХ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЗ рдкрд╣рд▓реЗ/рдмрд╛рдж рдореЗрдВ рддреБрд░рдВрдд рд▓рд╛рдЧреВ рд╣реЛ рдЧрдпрд╛ рд╣реИ рд╕рдорд╛рд░реЛрд╣ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛, рд╣реИ рдирд╛?

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

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

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

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рдЕрд╡рд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдИ рдЧрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (1) рдФрд░ (2) рд╕реЗ рд╕рдорд╛рдзрд╛рди рд╕реНрдерд╛рди рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдкреАрдЖрдИ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдХреЗред

рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдПрдкреАрдЖрдИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

(рдП) рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ / рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдирд╛
(рдмреА) рдкреНрд░реЛрдк (рдЗрдирдкреБрдЯ) рдХреЛ рд░рд╛рдЬреНрдп (рдЖрдВрддрд░рд┐рдХ) рд╕реЗ рдЕрд▓рдЧ рд░рдЦреЗрдВ

(рдП) рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЦреБрдж рдХреЛ рдЧреИрд░-рдореВрд▓реНрдп рд╡рд░реНрдзрд┐рдд рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рд▓рд┐рдЦрддрд╛ рд╣реБрдЖ рдкрд╛рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг:

componentWillMount() { this.actuallyCheckThePropsAndMaybeDoSomething(); }
componentWillReceiveProps(nextProps) { this.actuallyCheckThePropsAndMaybeDoSomething(nextProps); }

actuallyCheckThePropsAndMaybeDoSomething(props) {
  props = props || this.props;

  let relatedProps1 = _.pick(props, KEYS1);
  if (!shallowEqual(this.relatedProps1, relatedProps1) { // changed
   this.relatedProps1 = relatedProps1;

   // do something
  }

  let relatedProps2 = _.pick(props, KEYS2);
  if (!shallowEqual(this.relatedProps1, relatedProps2) { // changed
   this.relatedProps2 = relatedProps2;

   // do something else
  }
}

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдкрд╣рд▓реА рдмрд╛рд░ рдмрдирд╛рдо рдмрджрд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХреЛрдб рдкрде рдирд╣реАрдВ рд╣реИ:

propsUpdated(prevProps) {
  if (!shallowEqual(_.pick(prevProps || {}, KEYS1), _.pick(this.props, KEYS1)) { // changed
   // do something
  }

  if (!shallowEqual(_.pick(prevProps || {}, KEYS2), _.pick(this.props, KEYS2)) { // changed
   // do something
  }
}

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

рдбрд┐рдЬрд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ (рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдФрд░ рднреА рд╣реИрдВ!), рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ propsUpdated рдФрд░ stateUpdated рдХреА рддрд░реНрдЬ рдкрд░ рдХреБрдЫ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред ?

@kmalakoff рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░реЛрдк рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдХрд┐ рдкреНрд░реЛрдк рдмрджрд▓ рдЧрдпрд╛/рдирд╣реАрдВ рдмрджрд▓рд╛ (рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореВрд▓реНрдп-рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рд╣реИ)ред

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

@jimfb рдЙрд╕ рднрд╛рд╖рд╛ рдХреА рд╕реАрдорд╛ рдХрд╛ рдареАрдХ-рдареАрдХ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдкреАрдЖрдИ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдЗрд╕ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓реАрдХреГрдд/рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ...

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ this.props === nextProps рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд, рддреЗрдЬрд╝ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

{ a: 1 } === { a: 1 } рдЭреВрдареА рдЙрдкрдЬ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди

var a = { a: 1 };
var b = a;
a === b

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

рд╣рдо рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП shouldComponentUpdate рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рдКрдкрд░ рд╣реИ

@kmalakoff рдореИрдВ рдЗрд╕ рд╕реВрддреНрд░ рдХреЛ https://gist.github.com/jimfb/9ef9b46741efbb949744

TLDR: @ akinnee-gl рдЕрдкрдиреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИ (рдзрдиреНрдпрд╡рд╛рдж!)ред рдорд╛рдореВрд▓реА рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рд░рд┐рдХрд░реНрд╕рд┐рд╡ рдЪреЗрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдереЗ (рднрд▓реЗ рд╣реА рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗ, рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдПрдХ рдЧреИрд░-рдореБрджреНрджрд╛ рдерд╛), рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдЖрдЗрдП рдЗрд╕ рд╕реВрддреНрд░ рдХреЛ рд╡рд┐рд╖рдп рдкрд░ рд░рдЦреЗрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐: рдкреАред

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

рдпрджрд┐ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдХреА рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдорд╕реЗ рд╡рд╣рд╛рдВ рдЬреБрдбрд╝реЗрдВ!

@jimfb @calmdev рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдЕрдм рдореБрдЭреЗ рдкреВрд░реА рд╕рдордЭ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ componentDidReceiveProps рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдирдпрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдмрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЖрдкрдХреА рдмрд╛рдд рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдерд╛, рдЕрдм рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рд╣рдЬ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИред

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

рдореЗрд░реЗ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреГрд╖реНрда рдШрдЯрдХ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

class ProfilePage extends Component {
  static propTypes = {
    fetchCurrentProfile: PropTypes.func.isRequired,
    currentProfile: PropTypes.object.isRequired
  }

  constructor(props) {
    super(props)
    this.state = { currentProfile: {} }
  }

  componentHasNewRouteParams(routeParams) {
    this.props.fetchCurrentProfile(routeParams.id)
  }

  componentWillMount() {
    this.componentHasNewRouteParams(this.props.routeParams)
  }

  componentWillReceiveProps(nextProps) {
    if (nextProps.routeParams.id !== this.props.routeParams.id) {
      this.componentHasNewRouteParams(nextProps.routeParams)
    }
    this.setState({
      currentProfile: nextProps.currentProfile
    })
  }

  render() {
    var profile = this.state.currentProfile
    return (
      <div>
        <h1>{ profile.name ? profile.name : null }</h1>
      </div>
    )
  }
}

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

рддреЛ... рдореИрдВрдиреЗ рдЗрд╕реЗ fetchCurrentProfile рдлрд╝рдВрдХреНрд╢рди ( componentHasNewIdProp рдореЗрдВ рд▓рдкреЗрдЯрд╛) рдХрд╣рд╛ рд╣реИ рдЬреЛ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрдд рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ Redux рдХреЛ рдПрдХ рдЕрджреНрдпрддрди рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд░реЗрдбреНрдпреВрд╕рд░ рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рддрдм ProfilePage рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

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

рдлрд┐рд░... рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗ рджреВрд╕рд░реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдПрдХ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд░рд╛рдЙрдЯрд░ рдорд╛рд░реНрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирдП рдорд╛рд░реНрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдФрд░ componentWillReceiveProps рдлрд╝рдВрдХреНрд╢рди рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ id рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо fetchCurrentProfile рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ ( componentHasNewIdProp )ред

рдЬрдм рдирдпрд╛ рдлрд╝реЗрдЪ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ рдФрд░ рд░реЗрдбрдХреНрд╕ рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ currentProfile рдкреНрд░реЛрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдШрдЯрдХ рдирдП рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред

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

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

рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдпрд╣рд╛рдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреАрд╡рди рдЪрдХреНрд░, рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдЗрддреНрдпрд╛рджрд┐ рдкрд░ рдЕрдзрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИред

рджреЛрд╕реНрддреЛрдВ, рдЖрдкрдХреЗ рд╕рд╣рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЧрд▓рдд рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рд╣реЛрдЧрд╛ред

@ shea256 рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдирдП рдПрдкреАрдЖрдИ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдЙрдЪрд┐рдд рдорд╛рдорд▓реЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдирдП рдПрдкреАрдЖрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред

рдореИрдВрдиреЗ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛: https://gist.github.com/jimfb/9ef9b46741efbb949744 , рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХрдо рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреЛ рдХрд╛рд░рдЧрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ...

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдПрдкреАрдЖрдИ рдиреЗ рдЖрдкрдХреЛ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде:

class ProfilePage extends Component {
  static propTypes = {
    fetchCurrentProfile: PropTypes.func.isRequired,
    currentProfile: PropTypes.object.isRequired
  }
  state = {currentProfile: {}}; // not material to example (babel-stage-1)

  // called both on init and update
  willReceiveProps(nextProps) {
    if (!this.props || (this.props.routeParams.id !== nextProps.routeParams.id)
      nextProps.fetchCurrentProfile(nextProps.routeParams.id)
  }

  render() {
    var profile = this.props.currentProfile;
    return (
      <div>
        <h1>{ profile.name ? profile.name : null }</h1>
      </div>
    )
  }
}

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

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

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

@ akinnee-gl, рдХрдИ рдЫреЛрдЯреЗ рдШрдЯрдХреЛрдВ рд╕реЗ рдмрдирд╛ рдПрдХ рдЖрд╡реЗрджрди рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХреБрдЫ рднрд╛рд░реА рдШрдЯрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдмреЗрд╣рддрд░ рд╣реИ:

  1. рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг "рдПрдХрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╕рд┐рджреНрдзрд╛рдВрдд" рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ
  2. рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдШрдЯрдХ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ
  3. рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рд░рдЪрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рдкреЗрдЯрдХрд░ рдШрдЯрдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  4. рддрд░реАрдХреЗ рдФрд░ рдЧреБрдг рдЖрдкрд╕ рдореЗрдВ рдирд╣реАрдВ рдЯрдХрд░рд╛рддреЗ
  5. рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдШрдЯрдХ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ

рдЖрдкрдХреЗ рдиреЛрдЯрд┐рд╕ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░ рдкрд░ рдПрдХ рд╕реНрдЯреЛрд░ рд╕реЗ рдкрдврд╝рдирд╛ рдЕрдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рд░ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рдЪрд╛рд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рдШрдЯрдХ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП: https://gist.github.com/me-andre/0ca8b80239cd4624e6fc

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

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

рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рд╕рд╛рд░ рдореЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╣реИрдВред

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

@kmalakoff рдЖрдк рдЬрд┐рди рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЗ рд╡рд┐рд╖рдп рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (рдбреА) рдХрд╛ рдЙрддреНрддрд░ https://github.com/reactjs/react-future/issues/40#issuecomment -142442124 рдФрд░ https://github.com/reactjs/react-future/issues/40#issuecomment рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - резрелрейрекрекрежремрелрез. рдЙрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рд╡реЗ рдЙрдкрдпреБрдХреНрдд рд╕реВрддреНрд░ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп/рд╕рдордЧреНрд░ рдбрд┐рдЬрд╝рд╛рдЗрди/рдПрдкреАрдЖрдИ рдЪрд░реНрдЪрд╛рдУрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рдВрднрд╡рддрдГ рд╕рд╣реА рдорд╛рдзреНрдпрдо https://discuss.reactjs.org/ рд╣реИред

@jimfb рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдЬрдм рдЖрдкрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ

рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕реБрдиреЗрдВ ... рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо

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

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

@kmalakoff рдзрд╛рдЧреЗ рдХрд╛ рд╡рд┐рд╖рдп рд╢реАрд░реНрд╖рдХ рдФрд░ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢реАрд░реНрд╖рдХ рд╣реИ componentDidReceiveProps Please рди рдХрд┐ lots of general ways to reduce boilerplate ред рдпрд╣ рдзрд╛рдЧрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬреАрд╡рдирдЪрдХреНрд░ рдкрджреНрдзрддрд┐ рдХреА рд╢реБрд░реВрдЖрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╖рдпреЛрдВ (рдЬреИрд╕реЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛) рдХреЛ рдкреЗрд╢ рдХрд┐рдП рдмрд┐рдирд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рд╡рд╣ рдЪрд░реНрдЪрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

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

@jimfb рд▓реЛрдЧ componentDidReceiveProps рдХреНрдпреЛрдВ рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВ? рдЬрд┐рд╕ рдХрд╛рд░рдг рд╕реЗ рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рд╡рд╣ рд╣реИ рдкреНрд░реЙрдкреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ

рдЖрдкрдиреЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдмрддрд╛рдпрд╛ рд╣реИ рдФрд░ рдКрдкрд░ рдПрдХ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ (@ shea256 рдХрд╛ рдЬрд╡рд╛рдм) рдЬреЛ рд╡рд┐рд╖рдп рдкрд░, рджрд╛рдпрд░реЗ рдореЗрдВ рдФрд░, рдореЗрд░реЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ, рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдпрд╣ рдореБрджреНрджрд╛ред

рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рдПрдкреАрдЖрдИ рдореБрджреНрджреЛрдВ/рд╕реБрдзрд╛рд░реЛрдВ рдФрд░ рдЗрдЪреНрдЫрд╛ рдХреЗ рджрд╛рдпрд░реЗ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдкрд░ рд╕рд╣рдордд рд╣реВрдВред рдореЗ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реБ! :рдЖрдБрдЦ рдорд╛рд░рдирд╛:

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

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

@ рдореА-рдЖрдВрджреНрд░реЗ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдпрджрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдПрдкреАрдЖрдИ рд╕реБрдзрд╛рд░ рдХреА рдУрд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рддреА рд╣реИред

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

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

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

рдЬрд┐рдЬреНрдЮрд╛рд╕реБ - рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ componentWillReceiveProps рдЯреНрд░рд┐рдЧрд░ рди рд╣реЛрдиреЗ рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ? рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рд╣реЛрдиреЗ рдкрд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЙрдкреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдирдП рд╕рд╣рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

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

рдореИрдВ рдпрд╣рд╛рдБ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рджрд▓реЛрдВ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рд╕рдореЗрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдЧрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ componentWillReceiveNewProps рдорд╣рддреНрд╡рдкреВрд░реНрдг рдереЗ, рддреЛ рдХреЛрдИ рднреА рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдк рдкрд░ рдЪреЗрдХ рдХрд░рдХреЗ рд╕рдВрд╢реЛрдзрд┐рдд componentWillReceiveProps рд╕рд╛рде рдЗрд╕рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред

@kmalakoff рдЕрдЧрд░ componentWillReceiveProps рдкрд╣рд▓реА рдмрд╛рд░ рдЯреНрд░рд┐рдЧрд░ рд╣реБрдЖ, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдПрдкреАрдЖрдИ рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдорд╛рдирдХреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛?

componentWillReceiveProps рдорд╛рдЙрдВрдЯ рдкрд░ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реЛрдЧ componentDidReceiveProps рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВред рд▓реЛрдЧ componentDidReceiveProps рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ this.props рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдЕрдкрдиреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд┐рдЦрд╛ рд╣реИред рдЬрдм componentWillReceiveProps рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдиреЗрдХреНрд╕реНрдЯрдкреНрд░реЙрдкреНрд╕ рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди this.props рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ nextProps рдХреЛ рдЙрди рд╕рднреА рддрд░реАрдХреЛрдВ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ componentWillReceiveProps рдЬрд╡рд╛рдм рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред props = props || this.props рдПрдХ рдЯрди рдФрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХреЙрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ props рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЯрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред

@ shea256 рдЕрдЪреНрдЫреЗ рдЕрдВрдХред рдЖрд░рдВрднреАрдХрд░рдг рдмрдирд╛рдо рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрдб рдкрде рд╣реЛрдирд╛ рдкреНрд░реЛрдк рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рдореВрд▓ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЕрдиреНрдп рдореВрд▓ рдХрд╛рд░рдг @ akinnee-gl рдкреЙрдЗрдВрдЯ рдЖрдЙрдЯ рдЬреИрд╕реЗ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВред

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

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╣рдо рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ:

рдиреНрдпреВ рд╣реБрдХ рд╕реЗ рдкрд╣рд▓реЗ

componentWillMount() {
  this.setup(this.props.id);
}

componentWillReceiveProps(next) {
  this.setup(next.id);
}

setup(id) {
  UserActions.load(id);
}

рдиреНрдпреВ рд╣реБрдХ рдХреЗ рдмрд╛рдж (рд╕рдВрд╢реЛрдзрд┐рдд)

componentDidReceiveProps(prevProps) {
  UserActions.load(this.props.id);
}

рдпрд╛ рдпрджрд┐ UserActions.load рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рдЖрдИрдбреА рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

componentDidReceiveProps(prevProps) {
  if (!prevProps || (prevProps.id !== this.props.id))
    UserActions.load(this.props.id);
}

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

@ shea256 , componentWillReceiveProps рдкрд╣рд▓реЗ рд░реЗрдВрдбрд░ рд╕реЗ рдкрд╣рд▓реЗ рдЯреНрд░рд┐рдЧрд░ рди рд╣реЛрдиреЗ рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЙрд╕ рд╕рдордп this.props рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬрд╝ рдирд╣реАрдВ рд╣реИред рдЖрдк рдЖрдорддреМрд░ рдкрд░ componentWillReceiveProps рдЬреЛ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ this.props[propName] рддреБрд▓рдирд╛ newProps[propName] ред рдкрд╣рд▓реА рд░реЗрдВрдбрд░ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рдзрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ this.props рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рднреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рд╕реЗ рдкрд╣рд▓реЗ props рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдкреВрд░рд╛ рдШрдЯрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ state рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

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

@ akinnee-gl, рдЕрдкрдбреЗрдЯ рдкрд░ рдХреЗрд╡рд▓ this.props рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рд╡рд┐рдзрд┐ рд╣реИ - рдЗрд╕реЗ render() рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ shouldComponentUpdate() рдЪреЗрдХ рдХреЗ рдмрд╛рдж рднреА рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рдРрд╕рд╛ рд╕реНрдерд╛рди рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк this.props !== newProps рдпрд╛ _.isEqual(this.props, newProps) рдЖрджрд┐ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рддреЛ рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЛ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд render() рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ

this.setup(this.props);
return this._render();

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

@ me-andre рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЖрдзрд╛рд░ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рди рд╣реА рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЖрдзрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд░рд┐рдПрдХреНрдЯ рдПрдкреАрдЖрдИ рдЙрдк-рдЗрд╖реНрдЯрддрдо рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ рдЗрд╖реНрдЯрддрдо рдПрдкреАрдЖрдИ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдереЗ (рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдКрдкрд░ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА), рддреЛ рд╡рд░реНрддрдорд╛рди рд░рд┐рдПрдХреНрдЯ рдПрдкреАрдЖрдИ рдПрдХ рдордзреНрдп-рд╕реНрддрд░ рдХреА рд╕реАрдорд╛ рдореЗрдВ рд╕реНрдХреЛрд░ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЙрдк-рд░реВрдкреА / рдХрдореА рд╣реИред

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

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

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 1.0 рдХрд╛ рд▓рдХреНрд╖реНрдп рд╢реАрд░реНрд╖ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдордзреНрдп рдХреЗ рд▓рд┐рдПред рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг рд╡реГрджреНрдзрд┐ рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреА рд╣реИ, рддреЛ рдЖрдЗрдП 0.x рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЗрди рд╕рднреА рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╣рдордиреЗ рдЬреЛ рдХреБрдЫ рд╕реАрдЦрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рдВрднрд╡ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЪрд▓рддреЗ рд╣реИрдВред

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

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

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

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

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

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

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

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

@ рдореБрдЭреЗ-рдЖрдВрджреНрд░реЗ рдореИрдВ рдЖрдкрдХреЛ рд╕реБрдирддрд╛ рд╣реВрдВ рдФрд░ рдЖрдкрдХреЗ рддрд░реНрдХ рдХреА рд░реЗрдЦрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИред

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

рдЖрдк рдкреНрд░реЙрдкреНрд╕ рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдореМрдЬреВрджрд╛ рд░рд┐рдПрдХреНрдЯ рдПрдкреАрдЖрдИ рдХреЛ рдХреИрд╕реЗ рд░реЗрдЯ рдХрд░реЗрдВрдЧреЗ? (рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЕрдХреНрд╖рд░ рдЧреНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП: F рд╕реЗ A+), рдХреНрдпреЛрдВ, рдФрд░ рдпрджрд┐ рдпрд╣ A+ рд╕реЗ рдХрдо рд╣реИ рддреЛ рдЖрдк рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ?

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

+1

+1 рдХреГрдкрдпрд╛

рдХреНрдпрд╛ рдЖрд╕рдкрд╛рд╕ рдХреЛрдИ рдХрд╛рдо рд╣реИ? рдореБрдЭреЗ ComponentDidReceiveProps рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

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

@AlexCppns рдЖрдк рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@iammerrick , рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдЕрднреА рдЧрд▓рдд рд╕рдордЭрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓

рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░реНрдЪрд╛: https://github.com/facebook/react/issues/7678

рдореИрдВ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдмрд╛рд░ рднрд╛рдЧ рдЪреБрдХрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рдерд╛:

componentWillReceiveProps(nextProps) {
  if (this.props.foo !== nextProps.foo) this.needsUpdate = true;
}
componentDidUpdate() {
  if (this.needsUpdate) {
    this.needsUpdate = false;
    // update the dom
  }
}

рдпрд╣ рдмрд╣реБрдд рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИред

@рдмреНрд░рд┐рдЧреИрдВрдб , рдзреНрд╡рдЬ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдк componentDidUpdate() рднреАрддрд░ рдкреНрд░реЛрдк рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

componentDidUpdate(prevProps) {
    let needsUpdate = prevProps.foo !== this.props.foo;
    // ...whatever
}

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ shouldComponentUpdate() рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкреБрди: рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЛ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИред

рдУрд╣ рдХреВрд▓, рдзрдиреНрдпрд╡рд╛рдж!

@jimfb рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдиреАрдЪреЗ рдПрдХ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ componetDidReceiveProps рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реЛрддрд╛ред

  componentDidMount() {
    this._selectAll()
  }

  componentDidUpdate(prevProps) {
    let shouldUpdateSelected = (prevProps.recordTypeFilter !== this.props.recordTypeFilter) ||
      (prevProps.statusFilter !== this.props.statusFilter) ||
      (prevProps.list !== this.props.list)

    if (shouldUpdateSelected) { this._selectAll() }
  }

  _selectAll() {
    this.setState({ selectedIds: this._getFilteredOrders().map((order) => ( order.id )) })
  }

  _getFilteredOrders() {
    let filteredOrders = this.props.list

    // recordTypeFilter
    let recordTypeFilter = this.props.recordTypeFilter
    filteredOrders = _.filter(filteredOrders, (order) => {
        // somelogic
    })

    // statusFilter
    let statusFilter = this.props.statusFilter
    filteredOrders = _.filter(filteredOrders, (order) => {
        // somelogic
    })

    return filteredOrders
  }

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

  1. рдпрд╣ componentWillReceiveProps рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ, рди рдХрд┐ componentDidUpdate ред рдпрджрд┐ рдЖрдк componentWillReceiveProps рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рдШрдЯрдХ рдЙрд╕реА рддрд░реНрдХ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП рджреЛ рдмрд╛рд░ рдХрдо рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдПрдХ рд╕рд╛рд▓ рдмрд╛рдж рднреА рдореБрдЭреЗ рдЕрднреА рднреА componentDidUpdate рд▓рд┐рдП рдбреАрдУрдПрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╢реВрдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
  2. рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣реБрдХ рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЛ render() рд╡рд┐рдзрд┐/рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдШрдЯрдХ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ this.state.selectedIds рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд░рд╛рдЬреНрдп рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░реЙрдкреНрд╕ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рд╣рд╛рдп @ рдореА-рдЖрдВрджреНрд░реЗ, рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдЪрд░реНрдЪрд╛ рдкрдврд╝реА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╣рд╛рдВ, componentDidReceiveProps рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЪреАрдЬреЗрдВ рд░рд╣рд╕реНрдпрдордпреА рд▓рдЧрддреА рд╣реИрдВред
рдЖрдкрдиреЗ your component would re-render twice as less рдпрджрд┐ рдореИрдВ componentWillReceiveProps рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд░рд╣рд╕реНрдп рд╣реИред

рдореИрдВрдиреЗ рдЙрди рджреЛ рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдФрд░ рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реБрдЭрд╛рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрд╕рдлрд▓ рд░рд╣рд╛ред

  1. рдХрдВрдкреЛрдиреЗрдВрдЯрд╡рд┐рд▓ рд░рд┐рд╕реАрд╡рдкреНрд░реЙрдкреНрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ _getFilteredOrders() рдлрд╝рдВрдХреНрд╢рди рдХреЛ _selectAll() рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдиреНрдпреВрдкреНрд░реЙрдкреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  2. рдореИрдВ рдЗрд╕реЗ рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдмрд┐рдирд╛ selectedIds рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрд╛ред

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

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

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

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЖрдкрдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

  1. componentWillReceiveProps() рдФрд░ componentDidUpdate() рд╣реА рдкрд┐рдЫрд▓реЗ рдФрд░ рдЕрдЧрд▓реЗ рдкреНрд░реЙрдкреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдПрдХреНрдЯ рдбреЙрдХреНрд╕ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рдЖрдкрдХреЗ рдХреЛрдб рдХреЗ рдкреВрд░реНрдг рдХреЙрдкреАрдкреЗрд╕реНрдЯ рд╕реЗ рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЖрдк рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрдпрдирд┐рдд рдЖрдИрдбреА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреЙрдЧрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддрдм рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА componentWillReceiveProps() рдХрдо рд╕реЗ рдХрдо рджреЛ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред (рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ componentWillReceiveProps() рдмрд╛рдж рдПрдХ рд░реЗрдВрдбрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, setState() рдЖрдЧрд╛рдореА рд░реЗрдВрдбрд░ рдХреЗ рд▓рд┐рдП рдмрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛)ред
  3. рдХреГрдкрдпрд╛ рдбреЙрдХреНрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЕрдкрдирд╛ рд╕рдордп рдмрдЪрд╛рдПрдВ рдФрд░ рджреВрд╕рд░реЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдВред

@ рдореБрдЭреЗ-рдЖрдВрджреНрд░реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ componentWillReceiveProps рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рдмрд╛рдд рд╕рдордЭрддрд╛ рд╣реВрдВ:

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

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

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

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

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

рдореЗрд░рд╛ рдХрд╛рдо рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдирдП рдкреНрд░реЙрдкреНрд╕ рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ

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

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

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

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

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

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

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

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

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