React: рд╕рд┐рдВрдЧрд▓рдЯрди рд░рд┐рдПрдХреНрдЯрд░ рдШрдЯрдХ

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

рд╣реЗ рд▓реЛрдЧреЛрдВ!
рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдореИрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ "рд╕рд╣рд╛рдпрддрд╛ рдЕрдиреБрднрд╛рдЧ" рдирд╛рдордХ рдПрдХ рдШрдЯрдХ рд╣реИред рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдмреЙрдХреНрд╕ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЧрдбрд╝рдмрдбрд╝ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкрд╛рда рджрд┐рдЦрд╛рддрд╛ рд╣реИред

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореИрдВ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреЗ рд░реВрдк рдореЗрдВ "рд╕рд╣рд╛рдпрддрд╛ рдЕрдиреБрднрд╛рдЧ" рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╕рд┐рд░реНрдл import helpSection from './HelpSection рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ "рд╕рд╣рд╛рдпрддрд╛ рдЕрдиреБрднрд╛рдЧ" рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓реЗрдЧрд╛ред рдореБрдЭреЗ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдореИрдВ helpSection рдкрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░ рджреВрдВ рдЬреЛ рдЙрди рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

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

рдореБрдЭреЗ рдЗрд╕ JSfiddle рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╡реЗрдм рдкрд░ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ)ред рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ?

рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд╛рдлреА рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдмрд┐рдВрджреБ рдпрд╛рдж рдЖ рд░рд╣реЗ рд╣реИрдВ, рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?
рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

(PS рдХрд┐рд╕реА рднреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрд░реА рдореВрд▓ рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ ...: рдореБрд╕реНрдХрд╛рди :)

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

рдирдорд╕реНрдХрд╛рд░ @ ,

рдореИрдВ рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред Wir рдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА @ 16 рдкреЛрд░реНрдЯрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЛрдо рдХреЗ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдЬреИрд╕реЗ рдореЙрдбрд▓реНрд╕ рдпрд╛ рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдиреНрдп рдШрдЯрдХ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдореЗрд░реЗ App.jsx рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдорд╛рдЙрдВрдЯ рд╣реИред

App.jsx

[...]
render() {
  return (<SingletonOverlay></SingletonOverlay>)
}
[...]

Notification.jsx

import React from 'react';
import ReactDOM from 'react-dom';
import NotificationComponent from './Notification.js';
import SingletonOverlay from '../general/Overlay.js';

export default class Notification extends React.Component {

  constructor(props) {
    super(props);
    this.state = {
      element: null
    };
  }

  componentDidMount() {
    this.setState({ element: ReactDOM.findDOMNode(SingletonOverlay) });
  }

  render() {
    return this.state.element
      ? ReactDOM.createPortal(
        <NotificationComponent>That is a notification</NotificationComponent>,
        this.state.element,
      )
      : null;
  }
}

рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк document.findElementById рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдбреЛрдордиреЙрдб рдХреЛ рдвреВрдВрдврдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ ReactDOM.findDOMNode , рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдкреНрд░рд┐рдп рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ "рд░рд┐рдПрдХреНрдЯ-рдХреЙрд╕рдореЙрд╕" рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

@jimfb рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдлреАрдЪрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдЧрд╛?

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

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

рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрд╢рдВрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХрд▓рддрд╛рдУрдВ рд╕реЗ рдмрдЪреЗрдВред
http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons

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

"рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрд╡рд╛рдж" рдбреЙрдХреНрдЯрд░ рдкреГрд╖реНрда рд╕реЗ :

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

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

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

рдпрд╣ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ (рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ)ред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА GitHub рдкрд░ рдПрдХ рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рддрд░реАрдХреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЙрдХреНрд╕ рдХреЛ рдЗрд╕рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

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

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

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

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

рдореИрдВ рд╣рдореЗрд╢рд╛ рдмрд╣реБрдд рдмрдбрд╝реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд▓рд┐рдЦрддрд╛ рд╣реВрдБ .. рдореЗрд░реЗ рд╕рд╛рде рдкрдврд╝рдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред :рдореБрд╕реНрдХреБрд░рд╛рдУ:

рдирдорд╕реНрдХрд╛рд░ @ ,

рдореИрдВ рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред Wir рдиреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА @ 16 рдкреЛрд░реНрдЯрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЛрдо рдХреЗ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдЬреИрд╕реЗ рдореЙрдбрд▓реНрд╕ рдпрд╛ рд╕реВрдЪрдирд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдиреНрдп рдШрдЯрдХ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдореЗрд░реЗ App.jsx рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдорд╛рдЙрдВрдЯ рд╣реИред

App.jsx

[...]
render() {
  return (<SingletonOverlay></SingletonOverlay>)
}
[...]

Notification.jsx

import React from 'react';
import ReactDOM from 'react-dom';
import NotificationComponent from './Notification.js';
import SingletonOverlay from '../general/Overlay.js';

export default class Notification extends React.Component {

  constructor(props) {
    super(props);
    this.state = {
      element: null
    };
  }

  componentDidMount() {
    this.setState({ element: ReactDOM.findDOMNode(SingletonOverlay) });
  }

  render() {
    return this.state.element
      ? ReactDOM.createPortal(
        <NotificationComponent>That is a notification</NotificationComponent>,
        this.state.element,
      )
      : null;
  }
}

рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк document.findElementById рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдбреЛрдордиреЙрдб рдХреЛ рдвреВрдВрдврдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ ReactDOM.findDOMNode , рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдкреНрд░рд┐рдп рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ "рд░рд┐рдПрдХреНрдЯ-рдХреЙрд╕рдореЙрд╕" рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

@jimfb рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдлреАрдЪрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдЧрд╛?

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

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

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

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

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

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

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