рдореЗрд░реЗ ReactJS рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╢реАрд░реНрд╖ 5 рдмрдЧ

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

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

рдореИрдВрдиреЗ рдПрдХ ReacjJS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛

1. рд╕реНрдЯреЗрдЯрдлреБрд▓ рдХрдВрдкреЛрдиреЗрдВрдЯ (рдХреНрд▓рд╛рд╕реЗрд╕) рд╣реБрдХ рд╕реЗ рднреА рдмрджрддрд░ рд╣реИрдВ


рд╢рд╛рдпрдж рдпрд╣ рд╕рдмрд╕реЗ рд╕рдирд╕рдиреАрдЦреЗрдЬ ReactJS рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рдЬреЛ 16.8+ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдХреБрдЫ рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдкрд┐рдЫрд▓реА рдкреАрдврд╝рд┐рдпреЛрдВ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдЧреНрд░рд╕реНрдд рдереА рдФрд░ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреА рдереАред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА 2019 рдореЗрдВ рд╣реБрдХ рдХреЗ рдмрдЬрд╛рдп рдХрдХреНрд╖рд╛ рдХреЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдмрдбрд╝реА рдЧрд▓рддреА рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдмрд╕ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рд▓рд╛рдн рдХреНрдпрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ , рдбреЗрди рдЕрдмреНрд░рд╛рдореЛрд╡ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдЕрджреНрднреБрдд рд╡реАрдбрд┐рдпреЛ рдХреЛ рдмреЗрд╣рддрд░ рджреЗрдЦреЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдиреНрдпрдерд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛

рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реБрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╡рдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рд▓реЗрдЦ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦреЗ рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВ:

  1. рдЖрдкрдХреЗ рд░рд┐рдПрдХреНрдЯ рдХреЛрдб рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рдЧрд▓рддрд┐рдпрд╛рдБ рдЬреЛ рдЖрдк (рд╕рдВрднрд╡рддрдГ) рдХрд░рддреЗ рд╣реИрдВ
  2. 7 рд╕рдмрд╕реЗ рдЖрдо рдЧрд▓рддрд┐рдпрд╛рдБ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмрдирд╛рддреА рд╣реИрдВ

2. рд╕рд╣рд╛рд░рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


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

export default function MyOtherComponent() { return ( <MyComponent getValue={i => i.value} /> {/*     */} ); } 

рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдк Redux рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдкрдврд╝реЗрдВ рдирд╣реАрдВ):

 import { connect } from 'react-redux'; import { createStructuredSelector } from 'reselect'; import MyComponent from './MyComponent'; import { fetchProjectData, projectId } from "./store/projects" const mapStateToProps = createStructuredSelector({ projectId, }); const mapDispatchToProps = { fetchProjectData, }; const mergeProps = ( { projectId, ...restState }: any, { fetchProjectData, ...restDispatch }: any, { memberId, ...restOwn }: any ) => ({ ...restState, ...restDispatch, ...restOwn, fetchProjectData: () => fetchProjectData(projectId), }); export default connect( mapStateToProps, mapDispatchToProps, mergeProps )(MyComponent); 

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

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

рдмрд╕ рдХреБрдЫ рд╢рдмреНрдж, рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред рдпрд╣рд╛рдВ рдЬрд╛рдирд┐рдП рдХреИрд╕реЗ:

 const getValue = i => i.value; return default function MyOtherComponent() { return ( <MyComponent getValue={getValue} /> ); } 

 import { connect } from 'react-redux'; import { createStructuredSelector } from 'reselect'; import MyComponent from './MyComponent'; import { fetchProjectData, projectId } from "./store/projects" const mapStateToProps = createStructuredSelector({ projectId, }); const mapDispatchToProps = { fetchProjectData, }; export default connect( mapStateToProps, mapDispatchToProps )(MyComponent); //     import React, { useEffect } from 'react'; export default function MyComponent({ fetchProjectData, projectId }) { useEffect(() => { fetchProjectData(projectId); }, [fetchProjectData, projectId]); return ( <div>{/* -  */}</div> ); } //        ,       , ..     . , -   ,     . 

3. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдХрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрджрд╛рд╣рд░рдг


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

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

 import React, { useCallback, useEffect } from 'react'; export default function MyComponent() { const reactHandlerOfLegacyEvent = useCallback((event) => {/* event handler */}, []); useEffect(() => { document.addEventListener("myLegacyEvent", reactHandlerOfLegacyEvent); return () => { document.removeEventListener("myLegacyEvent", reactHandlerOfLegacyEvent); }; }, [reactHandlerOfLegacyEvent]); return ({/*  -  */}); } 

4. рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛, рдореМрдЬреВрджрд╛ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЗ рдмрдЬрд╛рдп


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

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

5. рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдбрд░


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

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

рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж


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

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдЖрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреЗрдВред рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдпрд╛рдж рдХрд┐рдпрд╛ (рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд╣реИ)ред рд╕рднреА рд╕рдлрд▓рддрд╛ рдФрд░ рдЕрдЪреНрдЫреЗ рдореВрдб!

Source: https://habr.com/ru/post/hi462705/


All Articles