React: рдИрдПрд╕ 6 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдмрд╛рдЗрдВрдб рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ?

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

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

рдпрд╣ рдбреЙрдХреНрд╕ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдШрдЯрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрддреА рд╣реИ (рдИрдПрд╕ 6 рд╡рд░реНрдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЫреЛрдбрд╝рдХрд░)

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

рдХреЛрдИ рднреА рд╕рд╣рд╛рдпрддрд╛рдХрд╛рдлреА рдкреНрд░рд╢рдВрд╕рдиреАрдп рд╣реЛрдЧреА !

export default class SomeComponent extends Component {

  handleIframeData(event) {
    // some stuff in there that will need 'this' to be set to the component's context, to get props for example.
  }

  componentDidMount() {
    window.addEventListener('message', this.handleIframeData.bind(this), false)
  }

  componentWillUnmount() {
    // won't work because 'this.handleIframeData.bind(this) !== this.handleIframeData'
    window.removeEventListener('message', this.handleIframeData, false)
  }

  render() {
    return (
      <div className="SomeComponent" style={{height: '100%', width:'100%', display: 'table'}}>
        <iframe src="assets/iframe/index.html" style={{display: 'table-row', width: '100%', height:'100%', border: 0}}></iframe>
      </div>
    )
  }
}

рдлрд┐рд░ рднреА рдзрдиреНрдпрд╡рд╛рдж !

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

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

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

constructor(props) {
  super(props);
  this.handleIframeData = this.handleIframeData.bind(this);
}

рдЙрди рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреЛ рднреА рджреЗрдЦреЗрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрдХреНрд╖рд╛рдПрдВ рд╢реБрд░реВ рдХреА рдереАрдВ: https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html#autobinding ред

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

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

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

constructor(props) {
  super(props);
  this.handleIframeData = this.handleIframeData.bind(this);
}

рдЙрди рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреЛ рднреА рджреЗрдЦреЗрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрдХреНрд╖рд╛рдПрдВ рд╢реБрд░реВ рдХреА рдереАрдВ: https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html#autobinding ред

@fkling рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдХрд╣рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛: рдкреАред рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд╕рд╣реАред рдзрдиреНрдпрд╡рд╛рдж!

рдЙрд╕рдХреЗ рд▓рд┐рдП, рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж!

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

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

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

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

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

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

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