React: [рдлрд╛рдЗрдмрд░] рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдЬрдм рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдбреЛрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ

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

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдмрдЧ-ish

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдЬрдм рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ react-dom рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП transitively ReactDOMFrameScheduling.js рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ) рдХреНрдпреЛрдВрдХрд┐ rAF рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИред

Invariant Violation: React depends on requestAnimationFrame. Make sure that you load a polyfill in older browsers.
    at invariant (app/node_modules/fbjs/lib/invariant.js:44:15)
    at Object.<anonymous> (app/node_modules/react-dom/lib/ReactDOMFrameScheduling.js:30:3)

рдпрджрд┐ рдЖрдк рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдШрдЯрдХ рдХреА рддрд░рд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдЖрдпрд╛рдд, рд╣реИ рд╣реИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ react-router-scroll рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, react-dom рдХреЗ рдмрдЬрд╛рдп react-dom/server ред

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдЬрдм рддрдХ requestAnimationFrame рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛, рдореИрдВ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛ред Ex: raz рдХреЗ рд▓рд┐рдП lazily рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ rIC рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред

рд░рд┐рдПрдХреНрдЯ рдХреЗ рдХреМрди рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдХреМрди рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ / OS рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИрдВ?
рдиреЛрдб 16.1.1 рдкрд░ 16.0.0-рдЕрд▓реНрдлрд╛.3 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рдпрд╣ рдЕрд▓реНрдлрд╛ 3 рдореЗрдВ рд╣реЛрдиреЗ рд▓рдЧрд╛, рдЬрд┐рд╕рдиреЗ рдлрд╛рдЗрдмрд░ рднреЗрдЬ рджрд┐рдпрд╛ рдФрд░ рд╕рдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ред

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

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

global.window = global;
window.addEventListener = () => {};
window.requestAnimationFrame = () => {
  throw new Error('requestAnimationFrame is not supported in Node');
};

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

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

global.window = global;
window.addEventListener = () => {};
window.requestAnimationFrame = () => {
  throw new Error('requestAnimationFrame is not supported in Node');
};

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

@gaearon рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдореЗрдВ рдЗрд╕реЗ рдирд╣реАрдВ рдкрдХрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, react-dom рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ findDOMNode рдПрдХ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЙрди рдШрдЯрдХреЛрдВ рдХреЛ рдЙрди рд╣реБрдХ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ?

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

рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдареАрдХ рд╣реИред рдЕрдиреНрдпрдерд╛ рдЖрдк рдПрдХ рдШрдЯрдХ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ findDOMNode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдЗрд╕реЗ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдореЗрдВ рдирд╣реАрдВ рдкрдХрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛

рдирд╣реАрдВ, рдкрд░реАрдХреНрд╖рдг рдЗрд╕реЗ рдирд╣реАрдВ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЖрд░рдПрдПрдл рдкреЙрд▓реАрдлрд┐рд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдкреАрдЖрд░ рд╕рд┐рд░реНрдл рдЪрд┐рддреНрд░рдг рдХреЗ рд▓рд┐рдП рд╣реИред рдмрд╕ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ред рдХреЛрдИ рднреА рд▓рд╛рдЗрдирд┐рдВрдЧ рдФрд░ рдкреНрд░реАрдЯрд┐рдпрд░ рдЕрднреА рддрдХ рдирд╣реАрдВ рдЪрд▓рд╛ред

рдХреЛрдб рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рд╛ред

рдореИрдВрдиреЗ ReactFiberScheduler рдХреЗ рдЕрдВрджрд░ rAF рд▓рд┐рдП рдЪреЗрдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛

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

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

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

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

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

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

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

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