рд╡рд╛рджрд╛ рдкрд░ рд╕рдВрд╡рд╛рдж

рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдХреНрдпрд╛ рд╣реИ?

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

рд╣рдо рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ
рдЙрд╕рд╕реЗ рдЬрд╡рд╛рдм рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдХреБрдЫ рднреА рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ? рдФрд░ рдореИрдВрдиреЗ рдРрд╕рд╛ рд╕реЛрдЪрд╛ред

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

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

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

рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдо рдЖрд░реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдп рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдЫрд╡рд┐

рдЕрдм рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред

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

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

рдпрд╣ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕рд┐рдЬреНрдо рдХреА рд╕реНрдореИрдХ ...

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

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

рдЫрд╡рд┐

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

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

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

// ./Provider.js export const DialogContext = React.createContext(); export const Provider = ({ children, node, Layout, config }) => { const [instances, setInstances] = useState([]); const [events, setEvents] = useState([]); const context = { instances, setInstances, config, events, setEvents }; const Component = instances.map(instance => ( <Layout key={instance.instanceName} component={config[instance.instanceName]} {...instance} /> )); const context = { instances setInstances }; //   state     const child = useMemo(() => React.Children.only(children), [children]); return ( <DialogContext.Provider value={context}> <> {child} {createPortal(Component, node)} </> </DialogContext.Provider> ); }; 

рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд╣рдо рдУрдкрди рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдвреЗрд░ рдЬреИрд╕рд╛ рдХреБрдЫред

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

рд╣рдо рдкреЛрд░реНрдЯрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реЗрдВрдбрд░ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдореЗрдВ z- рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╣реЛрдиреЗ рдкрд░ рд╕рдВрдШрд░реНрд╖ рди рдХрд░рдирд╛ рдкрдбрд╝реЗред

рд▓реЗрдЖрдЙрдЯ рдПрдХ рдШрдЯрдХ рд╣реИ рдЬреЛ рд╕рднреА рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдШрдЯрдХ рд╣реЛрдЧрд╛ред

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

 //  config.js export const exampleInstanceName = 'modal/example'; export default { [exampleInstanceName]: React.lazy(() => import('./Example')), }; 

рдЕрдм рд╣рдо рдЙрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдЧреАред

рдпрд╣ рд╣реБрдХ рд╣реЛрдЧрд╛:

 export const useDialog = () => { const { setEvents, setInstances, config } = useContext(DialogContext); const open = instance => new Promise((resolve, reject) => { if (instance.instanceName in config) { setInstances(prevInstances => [...prevInstances, instance]); setEvents(prevEvents => [...prevEvents, { resolve, reject }]); } else { throw new Error(`${instance['instanceName']} don't exist in modal config`); } }); return { open }; }; 

рд╣реБрдХ рдПрдХ рдЦреБрд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 import { exampleInstanceName } from './config'; import { useDialog } from './useDialog'; const FillFormButton = () => { const { open } = useDialog(); const fillForm = () => open(exampleInstanceName) return <button onClick={fillForm}>fill form from modal</button> } 

рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ, рд╣рдо рдХрднреА рднреА рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рдореЗрдВ рд╡рд╛рджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

 // ./Provider.js export const DialogContext = React.createContext(); export const Provider = ({ children, node, Layout, config }) => { const [instances, setInstances] = useState([]); const [events, setEvents] = useState([]); const close = useCallback(() => { const { resolve } = events[events.length - 1]; const resolveParams = { action: actions.close }; setInstances(prevInstances => prevInstances.filter((_, index) => index !== prevInstances.length - 1)); setEvents(prevEvents => prevEvents.filter((_, index) => index !== prevEvents.length - 1)); resolve(resolveParams); }, [events]); const cancel = useCallback((values): void => { const { resolve } = events[events.length - 1]; const resolveParams = { action: actions.cancel, values }; setInstances(prevInstances => prevInstances.filter((_el, index) => index !== prevInstances.length - 1)); setEvents(prevEvents => prevEvents.filter((_el, index) => index !== prevEvents.length - 1)); resolve(resolveParams); }, [events]); const success = useCallback((values) => { const { resolve } = events[events.length - 1]; const resolveParams = { action: actions.success, values }; setInstances(prevInstances => prevInstances.filter((_el, index) => index !== prevInstances.length - 1)); setEvents(prevEvents => prevEvents.filter((_el, index) => index !== prevEvents.length - 1)); resolve(resolveParams); }, [events]); const context = { instances, setInstances, config, events, setEvents }; const Component = instances.map(instance => ( <Layout key={instance.instanceName} component={config[instance.instanceName]} cancel={cancel} success={success} close={close} {...instance} /> )); const context = { instances setInstances }; //   state     const child = useMemo(() => React.Children.only(children), [children]); return ( <DialogContext.Provider value={context}> <> {child} {createPortal(Component, node)} </> </DialogContext.Provider> ); }; 

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

 const { useState } from 'rect'; import { exampleInstanceName } from './config'; import { useDialog } from './useDialog'; const FillFormButton = () => { const [disabled, setDisabled] = useState(false); const { open } = useDialog(); const fillForm = () => open(exampleInstanceName) .then(({ action }) => { if (action === 'success') setDisabled(true); }); return <button onClick={fillForm} disabled={disabled}>fill form from modal</button> } 

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

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


All Articles