рд╣реБрдХ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдИ рд░рд┐рдПрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЙрддреНрд╕рд╛рд╣ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдВрдд рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЯреВрд▓рдХрд┐рдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдХрд╛рдлреА рдХрдо рдХреЛрдб рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рджрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдирдХ рдпреВрдЬрд╝рд╕реНрдЯреЗрдЯ рдФрд░ рдЙрдкрдпреЛрдЧрд░реЗрдбрд░ рд╣реБрдХреНрд╕ рд╣рдо рд╕рднреА рдХреЛ рд░рд╛рдЬреНрдп рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ, рдЙрдирдХреЗ рдХрдЪреНрдЪреЗ рд░реВрдк рдореЗрдВ, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░рд╛рдЬреНрдп рдирд┐рд░реНрдорд╛рдг рд╣реБрдХ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░рд┐рдПрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЦреБрдж рдХреЛ рдХрд╕реНрдЯрдо рд╣реБрдХ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рджреГрдврд╝рддрд╛ рд╕реЗ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ? рдХрдЯ рдХреЗ рддрд╣рдд, рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдкрд░ рдирдЬрд░ рдбрд╛рд▓реЗрдВрдЧреЗ рдХрд┐ рд╕рд╛рдзрд╛рд░рдг рд╣реБрдХ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд╖реЗрддреНрд░ рд╣реИ, рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ, рдПрдХ рдирд╛рдоред рдФрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдПрдХ рдмрдЯрди рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдореЗрдВ рджрд░реНрдЬ рдирд╛рдо (рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЦреЛрдЬ) рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИред рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡рд╣реАрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
const App = () => { const [name, setName] = useState(''); const [request, setRequest] = useState(); const [result, setResult] = useState(); useEffect(() => { fetch('//example.api/' + name).then((data) => { setResult(data.result); }); }, [request]); return <div> <input onChange={e => setName(e.target.value)}/> <input type="submit" value="Check" onClick={() => setRequest(name)}/> { result && <div>Result: { result }</div> } </div>; }
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ? рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХреБрдЫ рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдлреЙрд░реНрдо рдХреЛ рджреЛ рдмрд╛рд░ рднреЗрдЬрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рдЕрдиреБрд░реЛрдз рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рджреВрд╕рд░реЗ рдХреНрд▓рд┐рдХ рдкрд░ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдПрдХ рдЯрд┐рдХрдЯ рдЦреЛрдЬ рд╕реЗрд╡рд╛ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдЫ рдЕрдВрддрд░рд╛рд▓реЛрдВ рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛ рдмрд╛рд░-рдмрд╛рд░ рдлреЙрд░реНрдо рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛! рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рдЕрдиреНрдпрдерд╛ рдкрд╛рда рдмрджрд▓рдиреЗ рдкрд░ рдлреЙрд░реНрдо рддреБрд░рдВрдд рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдЦреИрд░, рдЖрдкрдХреЛ рд╕рд░рд▓рддрд╛ рджрд┐рдЦрд╛рдиреА рд╣реЛрдЧреАред
const App = () => { const [name, setName] = useState(''); const [request, setRequest] = useState(); const [result, setResult] = useState(); useEffect(() => { fetch('//example.api/' + name).then((data) => { setResult(data.result); }); }, [request]); return <div> <input onChange={e => setName(e.target.value)}/> <input type="submit" value="Check" onClick={() => setRequest(!request)}/> { result && <div>Result: { result }</div> } </div>; }
рдЕрдм, рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрд░реНрде рдХреЛ рд╡рд┐рдкрд░реАрдд рдореЗрдВ рдмрджрд▓ рджреЗрдВрдЧреЗ, рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдФрд░ рдирд┐рд░реНрджреЛрд╖ рдмреИрд╕рд╛рдЦреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдХреБрдЫ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЕрдм рдпрд╣ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЪреВрд╕рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреЗ рдкреИрдорд╛рдиреЗ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реВрдВред рдЦреИрд░, рдпрд╣ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЖрдкрдХреЛ рдЗрд╕ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдЖрдЗрдП рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдереНрд░реЗрдб рдПрдмреНрд╕реНрдЯреНрд░рдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕реНрддрд░ рдкрд░ рджреЗрдЦреЗрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдзрд╛рд░рд╛рдПрдБ рд╣реИрдВ: рдбреЗрдЯрд╛ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ (рдирд╛рдо $) рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдлреЙрд░реНрдо рдХреЗ рд╕рдмрдорд┐рдЯ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХреА рдПрдХ рдзрд╛рд░рд╛ ($ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ)ред рдЙрдирд╕реЗ рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдПрдХ рддреАрд╕рд░реА, рд╕рдВрдпреБрдХреНрдд рдзрд╛рд░рд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
name$ __(C)____(Ca)_____(Car)____________________(Carl)___________ click$ ___________________________()______()________________()_____ request$ ___________________________(Car)___(Car)_____________(Carl)_
рдпрд╣рд╛рдВ рд╡рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдзрд╛рд░рд╛ рдХреЗ рджреЛ рдкрд╣рд▓реВ рд╣реЛрддреЗ рд╣реИрдВ: рдЗрд╕рдХрд╛ рдореВрд▓реНрдп, рдФрд░ рд╕рдордп рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓реНрдп рдкреНрд░рд╡рд╛рд╣рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдкрд╣рд▓реВ рдпрд╛ рджреЛрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЖрдк рд╕рдВрдЧреАрдд рдореЗрдВ рд▓рдп рдФрд░ рддрд╛рд▓рдореЗрд▓ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕реА рдзрд╛рд░рд╛рдПрдБ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХреЗрдд рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд▓рд┐рдХ $ рдПрдХ рд╢реБрджреНрдз рд╕рдВрдХреЗрдд рд╣реИ: рдпрд╣ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдореВрд▓реНрдп рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╣рддрд╛ рд╣реИ (рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд / рд╕рддреНрдп / рдШрдЯрдирд╛ / рдЬреЛ рднреА рд╣реЛ), рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИред рдХреЗрд╕ рдХрд╛ рдирд╛рдо $
рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд: рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдЗрд╕рдХреЗ рдЕрд░реНрде рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдФрд░ рдЗрди рджреЛ рдзрд╛рд░рд╛рдУрдВ рд╕реЗ рд╣рдореЗрдВ рддреАрд╕рд░рд╛ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдкрд╣рд▓реА рдмрд╛рд░ рд╕реЗ, рджреВрд╕рд░реА - рдореВрд▓реНрдп рд╕реЗред
Rxjs рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рдСрдкрд░реЗрдЯрд░ рд╣реИ:
const names$ = fromEvent(...); const click$ = fromEvent(...); const request$ = click$.pipe(withLatestFrom(name$), map(([name]) => fromPromise(fetch(...))));
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЖрд░рдПрдХреНрд╕ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд╛рдлреА рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдХрд▓реНрдк рдЖрд░рдЖрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рдЬрд┐рд╕реЗ рдЖрд░рдПрдХреНрд╕ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╛рддреНрдордХ-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рдХреБрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рдПрдХ рд╣реБрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
import useMrr from 'mrr/hooks'; const App = props => { const [state, set] = useMrr(props, { result: [name => fetch('//example.api/' + name).then(data => data.result), '-name', 'submit'], }); return <div> <input value={state.name} onChange={set('name')}/> <input type="submit" value="Check" onClick={set('submit')}/> { state.result && <div>Result: { state.result }</div> } </div>; }
UseMrr рдЗрдВрдЯрд░рдлрд╝реЗрд╕, useState рдпрд╛ useReducer рдХреЗ рд╕рдорд╛рди рд╣реИ: рдпрд╣ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдорд╛рди рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ (рд╕рднреА рдереНрд░реЗрдбреНрд╕ рдХреЗ рдорд╛рди) рдФрд░ рдПрдХ рд╕реЗрдЯрд░ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдВрджрд░ рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рдЬреНрдп рдХреНрд╖реЗрддреНрд░ (= рд╕реНрдЯреНрд░реАрдо), рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬрд┐рдирдореЗрдВ рд╣рдо рд╕реАрдзреЗ рдбреЛрдо рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдорд╛рди рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдереНрд░реЗрдбреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдмрдЪреНрдЪреЗ рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рд╣реЛрдЧреАред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореВрд▓ рд╕реВрддреНрд░ рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рд╣рдо рдХреЗрд╡рд▓ рдзрд╛рд░рд╛ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд╛рдо рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдЛрдг рдЪрд┐рдиреНрд╣ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИред
рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓рд╛, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдЗрдП рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдФрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдкрдардиреАрдпрддрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ред
Mrr рдореЗрдВ, рдЖрдкрдХреЛ "рдЯреЗрдореНрдкрд▓реЗрдЯ" рд╕реЗ "рддрд░реНрдХ" рдХрд╛ рд▓рдЧрднрдЧ рдкреВрд░рд╛ рдкреГрдердХреНрдХрд░рдг рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛: рдЖрдкрдХреЛ JSX рдореЗрдВ рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕рдм рдХреБрдЫ рдЕрддреНрдпрдВрдд рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИ: рд╣рдо рдмрд╕ DOM рдЗрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдореИрдк рдХрд░рддреЗ рд╣реИрдВ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд┐рдирд╛ (рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП, рдорд╛рди e.target.value рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЕрдиреНрдпрдерд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рди рдХрд░реЗрдВ), рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╣рдо рдЖрдзрд╛рд░ рдХреИрд╕реЗ рдмрдирддреЗ рд╣реИрдВред рд╕рд╣рд╛рдпрдХред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рджреЛрдиреЛрдВ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдореВрд▓реНрдп рдХреИрд╕реЗ рдмрдирддрд╛ рд╣реИред
Px рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛: рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ: рдпрджрд┐, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, mrr рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рд╡рд╛рджрд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╣рд▓ рди рд╣реЛ рдЬрд╛рдП рдФрд░ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, withLatestFrom рдХреЗ рдмрдЬрд╛рдп, рд╣рдордиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╢реНрд░рд╡рдг (рдорд╛рдЗрдирд╕ рд╕рд╛рдЗрди), рдЬреЛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдирд╛рдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдореЗрдВ рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рддреЛ рд╢реНрд░реА рдореЗрдВ рд╣рдо рдПрдХ рдФрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕реБрдирдиреЗ рдХреА рдзрд╛рд░рд╛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ:
result: [(name, surname) => fetch(...), '-name', '-surname', 'submit'],
рдФрд░ Rx рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ withLatestFrom рдХреЛ рдЦреЛрджрдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдкрд╣рд▓реЗ рдирд╛рдо рдФрд░ рдЙрдкрдирд╛рдо рдХреЛ рдПрдХ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рд╣реБрдХ рдФрд░ рд╢реНрд░реАред рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдПрдХ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд░рд┐рдХреЙрд░реНрдб, рдЬреЛ рд╣рдореЗрд╢рд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдмрдирддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд┐рдЧреНрдирд▓ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐
рдореБрдЭреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреНрд╡рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реИред
рдПрдХ рдФрд░ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдзрд╛рд░рдг рд╣реБрдХ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЕрддрд┐рд░рд┐рдХреНрдд рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрднреА рддрдХ рдпреВрдЖрдИ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рд░реЗрдВрдбрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред Mrr рд╡рд╛рд▓реЗ рд╡реЗрд░рд┐рдПрдВрдЯ рдореЗрдВ, рд▓реМрдЯрд╛ рд╣реБрдЖ рд░рд╛рдЬреНрдп рдХреЗрд╡рд▓ рддрднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рд╕рд░реНрд╡рд░ рд╕реЗ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╣рд▓реЗ рд╣реА рдЖ рдЧрдИ рд╣реЛред рдореИрдЪреЛрдВ рдкрд░ рдмрдЪрдд, рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ? рдЦреИрд░, рд╢рд╛рдпрджред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, "рдХрд┐рд╕реА рднреА рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЦреБрдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛" рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд, рдЬреЛ рдореВрд▓ рд╣реБрдХ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИ, рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
рдЕрддрд┐рд░рд┐рдХреНрдд рд░реЗрдВрдбрд░рд░реНрд╕ рдХрд╛ рдЕрд░реНрде рд╣реИ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдПрдХ рдирдпрд╛ рдЧрдардиред рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рд╕рд╛рдзрд╛рд░рдг рд╣реБрдХ рд╕рднреА рдЦрд░рд╛рдм рд╣реИрдВред рди рдХреЗрд╡рд▓ рд╣реИрдВрдбрд▓рд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╣рд░ рдмрд╛рд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рд╣реЛрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЖрдВрддрд░рд┐рдХ рдШрдЯрдХ рдЪрд░ рдореЗрдВ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Mrr рд╣реИрдВрдбрд▓рд░ рдЕрдзрд┐рдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИрдВ, рдФрд░ рдХреИрд╢рд┐рдВрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИ mrr: рд╕реЗрдЯ ('рдирд╛рдо') рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛, рдФрд░ рдмрд╛рдж рдХреЗ рд░реЗрдВрдбрд░ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИрдВрдбрд▓рд░ рдФрд░ рднреА рдЕрдзрд┐рдХ рдмреЛрдЭрд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдлреЙрд░реНрдо рд╕рдмрдорд┐рд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рднреА рджрд░реНрд╢рд╛рдиреА рд╣реЛрдЧреАред
const App = () => { const [request, makeRequest] = useState(); const [name, setName] = useState(''); const [result, setResult] = useState(false); const [clicks, setClicks] = useState(0); useEffect(() => { fetch('//example.api/' + name).then((data) => { setResult(data.result); }); }, [request]); return <div> <input onChange={e => setName(e.target.value)}/> <input type="submit" value="Check" onClick={() => { makeRequest(!request); setClicks(clicks + 1); }}/><br /> Clicked: { clicks } </div>; }
рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдирд╣реАрдВ рд▓рдЧ рд░рд╣реАред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрдардиреАрдпрддрд╛ рдмрдврд╝реЗрдЧреА, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд░рд╣реЗрдЧреА, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдкрд░рд┐рдкрдХреНрд╡рддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рднреА рд╣реЛрдЧреАред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдХреЛрдб рд╣реИ, рд╡реНрдпрд╛рдкрдХ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдПрдкреАрдЖрдИ рдзреАрд░реЗ-рдзреАрд░реЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдУрд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред
рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреИрдорд╛рдирд╛ рдЕрддрд┐рд░рдВрдЬрд┐рдд рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдПрдХреНрдЯ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЦреБрдж рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рдкреАрдврд╝реА рдХреЗ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреБрд░рдВрдд рдЙрдкрдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рдмреИрд╕рд╛рдЦреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
Mrr рдкрд░:
const App = props => { const [state, set] = useMrr(props, { $init: { clicks: 0, }, isValid: [name => fetch('//example.api/' + name).then(data => data.isValid), '-name', 'makeRequest'], clicks: [a => a + 1, '-clicks', 'makeRequest'], }); return <div> <input onChange={set('name')}/> <input type="submit" value="Check" onClick={set('makeRequest')}/> </div>; }
рдПрдХ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк рдЙрдкрдпреЛрдЧрд░реЗрдбрд░ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреА рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╕реНрдпрд╛рдПрдВ рдмрдиреА рд╣реБрдИ рд╣реИрдВ: рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреА рдХрдореА (рдЪреВрдВрдХрд┐ рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧ рдХреЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛), рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рджреМрд░рд╛рди рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдкрдардиреАрдпрддрд╛ (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рд╕реНрдЯреЛрд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ) )ред рдЕрдЧрд░ рд╢реНрд░реА рдкреНрд░рджреЗрд╢ рдореЗрдВ рд░рд╛рдЬреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ (рдереНрд░реЗрдбреНрд╕) рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╣реБрдХ рдореЗрдВ рдЖрдкрдХреЛ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╣реА рдШрдЯрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧрд╕реНрдЯреНрд░реЗрдЯ рдФрд░ рдЙрдкрдпреЛрдЧрд░реЗрдбрд░ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ (рдлрд┐рд░ рд╕реЗ рдЬрдЯрд┐рд▓ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИрдВрдбрд▓рд░ рд╣реЛрдВрдЧреЗ рдЬреЛ рдЙрдкрдпреЛрдЧрд╕реНрдЯреИрдЯ рдореЗрдВ рдХреБрдЫ рдмрджрд▓ рджреЗрдЧрд╛
рдФрд░ рдкреНрд░реЗрд╖рдг рдХреНрд░рд┐рдпрд╛), рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдШрдЯрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдмреЗрд╢рдХ, рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдЕрднреА рднреА рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рди рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреБрдЫ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕реНрдкрд░реНрд╢ рдХрд░реВрдВрдЧрд╛ред
рдХреЗрдВрджреНрд░реАрдХреГрдд рд▓реЙрдЧрд┐рдВрдЧ, рдбрд┐рдмрдЧред рдЪреВрдВрдХрд┐ рд╢реНрд░реА рдореЗрдВ рд╕рднреА рд╕реНрдЯреНрд░реАрдо рдПрдХ рд╣рдм рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИрдВ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдзреНрд╡рдЬ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
const App = props => { const [state, set] = useMrr(props, { $log: true, $init: { clicks: 0, }, isValid: [name => fetch('//example.api/' + name).then(data => data.isValid), '-name', 'makeRequest'], clicks: [a => a + 1, '-clicks', 'makeRequest'], }); ...
рдЙрд╕рдХреЗ рдмрд╛рдж, рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдкреВрд░реЗ рд░рд╛рдЬреНрдп рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╛рдиреА, рд╕рднреА рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп), рдПрдХ рдЫрджреНрдо-рдзрд╛рд░рд╛ $ рд╕реНрдерд┐рддрд┐ рд╣реИ:
a: [({ name, click, result }) => { ... }, '$state', 'click'],
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдкрдХреЛ рдЬрд░реВрд░рдд рд╣реИ рдпрд╛ рдпрджрд┐ рдЖрдк рд╕рдВрдкрд╛рджрдХреАрдп рд╢реИрд▓реА рдХреЗ рдмрд╣реБрдд рдЕрднреНрдпрд╕реНрдд рд╣реИрдВ, рддреЛ рдЖрдк mrr рдореЗрдВ рд╕рдВрдкрд╛рджрдХ рд╢реИрд▓реА рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдШрдЯрдирд╛ рдФрд░ рдкреВрд░реЗ рдкрд┐рдЫрд▓реЗ рд░рд╛рдЬреНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирдпрд╛ рдлрд╝реАрд▓реНрдб рдорд╛рди рд▓реМрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрди рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдкрд░реАрдд (рдЙрдкрдпреЛрдЧрд░реЗрдбрд░ рдпрд╛ mrr рд╢реИрд▓реА рдореЗрдВ рдПрдХ рд╕рдВрдкрд╛рджрдХ рдкрд░ рд▓реЗрдЦрди) рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рдкреНрд░рд╡рд╛рд╣ рдХреЗ рджреЛ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ: рдЕрд░реНрде рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп, рд╕рд╛рдордВрдЬрд╕реНрдп рдФрд░ рд▓рдп? рддреЛ, рд╕рд╛рдзрд╛рд░рдг рд╣реБрдХ рдореЗрдВ рдкрд╣рд▓реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде - рдирд╣реАрдВред рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмрд╛рд▓ рдзрд╛рд░рд╛рдПрдБ рдмрдирдирд╛, рдЬрд┐рдирдХреА "рд▓рдп" рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд┐рд▓реНрдЯрд░, рдбреАрдмреЙрдЗрди, рдЯреНрд░реЛрдЯрд▓ рдЖрджрд┐ рд╣реИрдВред рдпрд╣ рд╕рдм рдЖрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред Mrr рдореЗрдВ, рдЖрдк рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдХрдердиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдЬреНрдЬрди рд╕реЗрдЯ mrr рдСрдкрд░реЗрдЯрд░реЛрдВ Rx рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛ рд╕реЗ рдиреАрдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдирд╛рдордХрд░рдг рд╣реИред
рдкрд░рд╕реНрдкрд░ рд╕рдВрдкрд░реНрдХред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрд╣рд╛рдиреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред рдпрджрд┐ рд╣рдо рдХрдИ рдШрдЯрдХреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧрд░реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ,
рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЗ рд╕рдВрдЧрдарди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред Mrr рдкрд░, рдкреНрд░рд╡рд╛рд╣ рдПрдХ рдШрдЯрдХ рд╕реЗ рджреВрд╕рд░реЗ рддрдХ рдпрд╛ рддреЛ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ "рдкреНрд░рд╡рд╛рд╣" рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдШреЛрд╖рдгрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрд╛рд░рдг рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдпрд╣ рд╡рд┐рд╖рдп, рдФрд░ рд╕рд╛рде рд╣реА mrr рдПрдкреАрдЖрдИ рдХреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рд▓реЗрдЦ рдПрдХреНрдЯрд░реНрд╕ + рдПрдлрдЖрд░рдкреА рдЗрди рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ
рдирд┐рд╖реНрдХрд░реНрд╖
рдирдП рд░рд┐рдПрдХреНрдЯ рд╣реБрдХ рдорд╣рд╛рди рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рд╣реБрдХ (рд░рд╛рдЬреНрдп рдкреНрд░рдмрдВрдзрди) рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдХрд╛рд░реНрдпрд╛рддреНрдордХ-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ mrr рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ UseMrr рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред
рд╕рдорд╕реНрдпрд╛рдПрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдорд╛рдзрд╛рди:
- рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдВрдбрд░ рдкрд░ рдбреЗрдЯрд╛ рдХреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрдореА (рдкреБрд╢-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░рдг mrr рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИрдВ)
- рдЬрдм рд░рд╛рдЬреНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди UI рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реЗрдВрдбрд░рд┐рдВрдЧ
- рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдкрд╛рдВрддрд░рдг (рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ) рдХреЗ рд╕рд╛рде рдЦрд░рд╛рдм рдХреЛрдб рдкрдардиреАрдпрддрд╛ред Mrr рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕реЗ рдиреАрдЪ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓ рд╣реА рдХреЗ рд▓реЗрдЦ рдореЗрдВ mrr рдкрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╕реНрдпрд╛рдПрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИрдВ
- рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИрдВрдбрд▓рд░ рдЬреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ (рд╢реНрд░реА рдореЗрдВ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╢ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдШреЛрд╖рдгрд╛)
- рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ useState рдФрд░ useReducer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЕрдЬреАрдм рдХреЛрдб рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ
- рд╕рдордп рдХреЗ рд╕рд╛рде рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдХрдореА (рдмрд╣рд╕, рдЧрд▓рд╛ рдШреЛрдВрдЯрдирд╛, рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐)
рдХрдИ рдмрд┐рдВрджреБрдУрдВ рдкрд░, рдХреЛрдИ рдпрд╣ рддрд░реНрдХ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд╕реНрдЯрдо рд╣реБрдХ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдордЧреНрд░, рд╕реБрд╕рдВрдЧрдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИред
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдИ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдкрд╛рдВрддрд░рдг рд╣рдореЗрд╢рд╛ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рднреНрд░рд╛рдордХ рджрд┐рдЦрддреЗ рдереЗ, рдФрд░ рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рд╣реБрдХ рдкрд╣рд▓реЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг (рдПрдбреНрд╕, рдЖрджрд┐) рд╕реЗ рднреА рдмрджрддрд░ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдорд╕реНрдпрд╛ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдореМрдЬреВрдж рд╣реИрдВ рдпрд╛ рдмрдирд╛рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдпреЛрдЧреНрдп рд╡рд┐рдХрд▓реНрдк рдмрди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред рдЖрдЧрд╛рдореА рд░рд┐рдПрдХреНрдЯ рдХреИрд╢ рдПрдкреАрдЖрдИ рднреА рдПрдХ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЬреЛ рд▓реЛрдЧ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╡реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ 28 рдорд╛рд░реНрдЪ рдХреЛ рдХреАрд╡реАрдЬ рдкрд░ рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред