рд░рд┐рдПрдХреНрдЯ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓, рднрд╛рдЧ 17: рдПрдХ TODO рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкрд╛рдВрдЪрд╡рд╛ рдЪрд░рдг, рдШрдЯрдХреЛрдВ рдХреЗ рд░рд╛рдЬреНрдп рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛

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

рдЫрд╡рд┐

тЖТ рднрд╛рдЧ 1: рдкрд╛рдареНрдпрдХреНрд░рдо рдЕрд╡рд▓реЛрдХрди, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░рдг, ReactDOM рдФрд░ JSX
тЖТ рднрд╛рдЧ 2: рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ
тЖТ рднрд╛рдЧ 3: рдШрдЯрдХ рдлрд╛рдЗрд▓реЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛
тЖТ рднрд╛рдЧ 4: рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЗ рдШрдЯрдХ
тЖТ рднрд╛рдЧ 5: рдПрдХ TODO рдЖрд╡реЗрджрди, рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ
тЖТ рднрд╛рдЧ 6: рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЬреЗрдПрд╕рдПрдХреНрд╕ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
тЖТ рднрд╛рдЧ 7: рдЗрдирд▓рд╛рдЗрди рд╢реИрд▓реА
тЖТ рднрд╛рдЧ 8: TODO рдЖрд╡реЗрджрди рдкрд░ рдХрд╛рдо рдЬрд╛рд░реА рд░рдЦрд╛, рдШрдЯрдХреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд
тЖТ рднрд╛рдЧ 9: рдШрдЯрдХ рдЧреБрдг
тЖТ рднрд╛рдЧ 10: рдШрдЯрдХ рдЧреБрдгреЛрдВ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛
тЖТ рднрд╛рдЧ 11: рдбрд╛рдпрдиреЗрдорд┐рдХ рдорд╛рд░реНрдХрдЕрдк рдЬреЗрдирд░реЗрд╢рди рдФрд░ рдореИрдк рдПрд░реЗ рд╡рд┐рдзрд┐
тЖТ рднрд╛рдЧ 12: рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛, рдПрдХ TODO рдЖрд╡реЗрджрди рдкрд░ рдХрд╛рдо рдХрд╛ рддреАрд╕рд░рд╛ рдЪрд░рдг
тЖТ рднрд╛рдЧ 13: рд╡рд░реНрдЧ-рдЖрдзрд╛рд░рд┐рдд рдШрдЯрдХ
тЖТ рднрд╛рдЧ 14: рд╡рд░реНрдЧ-рдЖрдзрд╛рд░рд┐рдд рдШрдЯрдХреЛрдВ, рдШрдЯрдХ рд╕реНрдерд┐рддрд┐ рдкрд░ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛
тЖТ рднрд╛рдЧ 15: рдШрдЯрдХ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛рдПрдБ
тЖТ рднрд╛рдЧ 16: TODO рдЕрдиреБрдкреНрд░рдпреЛрдЧ, рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдкрд░ рдХрд╛рдо рдХрд╛ рдЪреМрдерд╛ рдЪрд░рдг
тЖТ рднрд╛рдЧ 17: TODO рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░ рдХрд╛рдо рдХрд╛ рдкрд╛рдВрдЪрд╡рд╛ рдЪрд░рдг, рдШрдЯрдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ
тЖТ рднрд╛рдЧ 18: TODO рдЖрд╡реЗрджрди рдкрд░ рдХрд╛рдо рдХрд╛ рдЫрдард╛ рдЪрд░рдг
тЖТ рднрд╛рдЧ 19: рдШрдЯрдХ рдЬреАрд╡рди рдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ
рднрд╛рдЧ 20: рд╕рд╢рд░реНрдд рдкреНрд░рддрд┐рдкрд╛рджрди рдореЗрдВ рдкрд╣рд▓рд╛ рдкрд╛рда
тЖТ рднрд╛рдЧ 21: рд╕рд╢рд░реНрдд рдкреНрд░рддрд┐рдкрд╛рджрди рдкрд░ рджреВрд╕рд░рд╛ рдкрд╛рда рдФрд░ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛
тЖТ рднрд╛рдЧ 22: TODO рдЖрд╡реЗрджрди рдкрд░ рдХрд╛рдо рдХрд╛ рд╕рд╛рддрд╡рд╛рдВ рдЪрд░рдг, рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛
тЖТ рднрд╛рдЧ 23: рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдкрд╣рд▓рд╛ рдкрд╛рда
тЖТ рднрд╛рдЧ 24: рджреВрд╕рд░рд╛ рд░реВрдк рдкрд╛рда
тЖТ рднрд╛рдЧ 25: рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛
тЖТ рднрд╛рдЧ 26: рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛, рдХрдВрдЯреЗрдирд░ / рдШрдЯрдХ рдкреИрдЯрд░реНрди
тЖТ рднрд╛рдЧ 27: рдкрд╛рдареНрдпрдХреНрд░рдо рдкрд░рд┐рдпреЛрдЬрдирд╛

рдкрд╛рда 31. рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ред TODO рдЖрд╡реЗрджрдиред рд╕реНрдЯреЗрдЬ рдирдВрдмрд░ 5


тЖТ рдореВрд▓

тЦНZadanie


рд╣рдорд╛рд░реЗ рдЯреЛрдбреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИ рдЬреЛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╣рдо, TodoItem рдШрдЯрдХ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреА checked рдХреА checked рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, onChange рдЗрд╡реЗрдВрдЯ onChange рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЭрдВрдбреЗ рдХреЛ рдЪреЗрдХ рдпрд╛ рдЕрдирдЪреЗрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдЖрдкрдХреЛ TodoItem рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде TodoItem рдШрдЯрдХ рдХреЗ checkbox рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рддрддреНрд╡ рд╕реЗ рд▓реИрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд╛рдо рдХреЗ рдЗрд╕ рдЪрд░рдг рдореЗрдВ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬреЛ рдХрдВрд╕реЛрд▓ рдХреЛ рдХреБрдЫ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред

тЦНReshenie


TodoItem рдШрдЯрдХ рдХреЛрдб рдЕрдм рдпрд╣рд╛рдБ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬреЛ TodoItem.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ:

 import React from "react" function TodoItem(props) {   return (       <div className="todo-item">           <input type="checkbox" checked={props.item.completed}/>           <p>{props.item.text}</p>       </div>   ) } export default TodoItem 

рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдХрдВрд╕реЛрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред


рд╕рд╛рдВрддреНрд╡рдирд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛

рдЗрд╕реА рд╕рдордп, рдЭрдВрдбреЗ рд╣рдорд╛рд░реЗ рдкреНрд░рднрд╛рд╡реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред

рдЗрд╕ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ checkbox рддрддреНрд╡ рдХреЛ onChange рдЗрд╡реЗрдВрдЯ onChange рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрд╣рд╛рдБ рдХреЛрдб рдореЗрдВ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 import React from "react" function TodoItem(props) {   return (       <div className="todo-item">           <input               type="checkbox"               checked={props.item.completed}               onChange={() => console.log("Changed!")}           />           <p>{props.item.text}</p>       </div>   ) } export default TodoItem 

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


рдЭрдВрдбреЗ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдВрд╕реЛрд▓ рд╕реЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдЧрд╛рдпрдм рд╣реЛ рдЧрдИ

рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдШрдЯрдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрд╡реЗрджрди рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдпрд╣ рдЫреЛрдЯрд╛ рд╕рд╛ рдмрджрд▓рд╛рд╡ рд╣рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдкрд╛рда 32. рдЕрд╡рдпрд╡реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдирд╛


тЖТ рдореВрд▓

рдЪрд▓рд┐рдП App.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, create-react-app рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдПрдХ рдорд╛рдирдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ create-react-app :

 import React from "react" class App extends React.Component {   constructor() {       super()       this.state = {           count: 0       }   }     render() {       return (           <div>               <h1>{this.state.count}</h1>               <button>Change!</button>           </div>       )   } } export default App 

index.css рд╢реИрд▓рд┐рдпрд╛рдБ index.css , рдЬреЛ index.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ:

 div {   display: flex;   flex-direction: column;   align-items: center;   justify-content: center; } h1 {   font-size: 3em; } button {   border: 1px solid lightgray;   background-color: transparent;   padding: 10px;   border-radius: 4px;  } button:hover {   cursor: pointer; } button:focus {   outline:0; } 

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рдореНрди рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЗрдЬ

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

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

рдЗрд╕рдореЗрдВ, рд╣рдо, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, super() рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд░рд╛рдЬреНрдп рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧреБрдг рдХреЛ рд▓рд┐рдЦрдХрд░ рдФрд░ рдЙрд╕реЗ 0 рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред render() рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдПрдХ рдкреНрд░рдердо-рд╕реНрддрд░реАрдп рд╣реЗрдбрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ count рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╢рдмреНрдж Change! рд╕рд╛рде рдПрдХ рдмрдЯрди Change! ред рдпрд╣ рд╕рднреА рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рд░реВрдкрд┐рдд рд╣реИред

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

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

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдШрдЯрдХ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреБрдЫ рднреА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХреЗ рдирд╛рдо рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдЬреЛ рд╡реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо, рдЪреВрдВрдХрд┐ рд╣рдо click рдЗрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕реЗ handleClick() ред рдЕрдм рдпрд╣рд╛рдВ App рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛрдб рдХреНрдпрд╛ рджрд┐рдЦреЗрдЧрд╛ред

 import React from "react" class App extends React.Component {   constructor() {       super()       this.state = {           count: 0       }   }     handleClick() {       console.log("I'm working!")   }     render() {       return (           <div>               <h1>{this.state.count}</h1>               <button onClick={this.handleClick}>Change!</button>           </div>       )   } } export default App 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ render() рд╕реЗ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдлреЙрд░реНрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ this.handleClick ред

рдЕрдм, рдпрджрд┐ рдЖрдк рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред


рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рдХреНрд▓рд╛рд╕ рдореЗрдердб рдХреЙрд▓ рд╣реЛрддрд╛ рд╣реИред

рдЕрдм рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдЗрд╕рдХреЗ рдКрдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝реЗ, рдЕрд░реНрдерд╛рдд рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред рд╢рд╛рдпрдж рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реАрдзреЗ handleClick() рд╡рд┐рдзрд┐ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ? рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрджрд┐ рд╣рдо рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 handleClick() {   this.state.count++ } 

рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред

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

рдЖрдкрдХреЛ рдпрд╛рдж рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рдереЗ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд╛рдЬреНрдп рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдШрдЯрдХреЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ рдХрд┐ рд╡реЗ React.Component рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ setState() рд╡рд┐рдзрд┐ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдорд░рдг рдХрд░реЛ рдХрд┐ рдПрдХ рд░рд╛рдЬреНрдп рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдЖрдЗрдП setState() рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреЛ рд░рд╛рдЬреНрдп рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧреАред рд╣рдо рдЗрд╕ handleClick() рд╕реЗ handleClick() рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ handleClick() :

 handleClick() {   this.setState({ count: 1 }) } 

рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╣реЛ рдЬрд╛рдПрдЧреА: TypeError: Cannot read property 'setState' of undefined ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдм рд╣рдо рдЬрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рд░рд┐рдПрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рд╡рд┐рд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдФрд░ рдЕрдм рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдЕрд╕рд╛рдорд╛рдиреНрдп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░, рдПрдХ рдХреНрд▓рд╛рд╕ рдореЗрдердб ( handleClick() рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ setState() рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ this ред рдпрд╣ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрд╢реЛрдзрди рдХреЗ рдмрд╛рдж рдШрдЯрдХ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 import React from "react" class App extends React.Component {   constructor() {       super()       this.state = {           count: 0       }       this.handleClick = this.handleClick.bind(this)   }     handleClick() {       this.setState({ count: 1 })   }     render() {       return (           <div>               <h1>{this.state.count}</h1>               <button onClick={this.handleClick}>Change!</button>           </div>       )   } } export default App 

рдЕрдм Change! рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Change! рдирдВрдмрд░ 1 рдЗрд╕рдХреЗ рдКрдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдПрдХ рдмрдЯрди рджрдмрд╛рдиреЗ рд╕реЗ рд░рд╛рдЬреНрдп рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛрддрд╛ рд╣реИ

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

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

 handleClick() {   this.setState(prevState => {             }) } 

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

рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд░рд╛рдЬреНрдп рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ handleClick() рдХрд░рдиреЗ рдХреЗ handleClick() рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ handleClick() рд╡рд┐рдзрд┐

 handleClick() {   this.setState(prevState => {       return {           count: prevState.count + 1       }   }) } 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ count рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирдпрд╛ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо count: prevState.count + 1 рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ count: prevState.count + 1 рдирд┐рд░реНрдорд╛рдгред рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлреЙрд░реНрдо count: prevState.count++ рдХрд╛ рдПрдХ рдирд┐рд░реНрдорд╛рдг count: prevState.count++ рдпрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд рд╣реИ, рд▓реЗрдХрд┐рди ++ рдСрдкрд░реЗрдЯрд░ count: prevState.count++ рдЪрд░ рдХреЛ count: prevState.count++ рдЬрд┐рд╕реЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд░рд╛рдЬреНрдп рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдШрдЯрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 import React from "react" class App extends React.Component {   constructor() {       super()       this.state = {           count: 0       }       this.handleClick = this.handleClick.bind(this)   }     handleClick() {       this.setState(prevState => {           return {               count: prevState.count + 1           }       })   }       render() {       return (           <div>               <h1>{this.state.count}</h1>               <button onClick={this.handleClick}>Change!</button>           </div>       )   } } export default App 

рдЕрдм рдмрдЯрди рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд┐рдХ рдХрд╛рдЙрдВрдЯрд░ рдореВрд▓реНрдп рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред


рдмрдЯрди рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд┐рдХ рдХрд╛рдЙрдВрдЯрд░ рдореВрд▓реНрдп рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдо рдкрддрд╛ рд▓рдЧрд╛ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рд╛рди рдЕрд╡рд╕рд░ рдЦреЛрд▓рддрд╛ рд╣реИред

рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдПрдХ рдореВрд▓ рдШрдЯрдХ, рдПрдХ рд╕рдВрдкрддреНрддрд┐ рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░рд╛рдЬреНрдп рд╕реЗ рдмрд╛рд▓ рдШрдЯрдХреЛрдВ рдХреЛ рдЧреБрдг рдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд░рд┐рдПрдХреНрдЯ рдореВрд▓ рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕ рдмрдЪреНрдЪреЗ рдШрдЯрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рдпрд╣ рд░рд╛рдЬреНрдп рдкрд╛рд░рд┐рдд рд╣реБрдЖ рд╣реИред рдпрд╣ render() рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдмрдЪреНрдЪрд╛ рдШрдЯрдХ рдореВрд▓ рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирдП рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░реЗрдЧрд╛ред

рдкрд░рд┐рдгрд╛рдо


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

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдк рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╡рд┐рд╢реЗрд╖ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реАрдзреЗ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

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


All Articles