рд░рд┐рдПрдХреНрдЯ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рднрд╛рдЧ 18: 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: рдкрд╛рдареНрдпрдХреНрд░рдо рдкрд░рд┐рдпреЛрдЬрдирд╛

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


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

тЦНZadanie


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

  1. App рдШрдЯрдХ рдореЗрдВ рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдПрдВ рдЬреЛ рдлреНрд▓реИрдЧ onChange рдЬрд╡рд╛рдм рдореЗрдВ рд╣реИ (рд╣рдо onChange рдЗрд╡реЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рдФрд░ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЖрдЬ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдХреЛрдб рдореЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
  2. TodoItem рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдзрд┐ рдкрд╛рд╕ рдХрд░реЗрдВред
  3. TodoItem рдШрдЯрдХ рдореЗрдВ TodoItem рдПрдХ рдРрд╕рд╛ рддрдВрддреНрд░ рдмрдирд╛рдПрдБ, рдЬреЛ рдЬрдм onChange рдШрдЯрдирд╛ onChange , рддреЛ рдШрдЯрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рдХреЗрд╕ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╝рд╛рдпрд░ ( id ) рдкрд╛рд╕ рдХрд░реЗ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреНрд▓рд┐рдХ рдХрд┐рдП рдЧрдП рдзреНрд╡рдЬ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред

рдпрд╣рд╛рдБ App рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:

 import React from "react" import TodoItem from "./TodoItem" import todosData from "./todosData" class App extends React.Component {   constructor() {       super()       this.state = {           todos: todosData       }       this.handleChange = this.handleChange.bind(this)   }     handleChange(id) {       //   ,      id        // completed   c false  true ( ).       //   ,       .       //       ,  .       // (  ,       map.)   }     render() {       const todoItems = this.state.todos.map(item => <TodoItem key={item.id} item={item}/>)             return (           <div className="todo-list">               {todoItems}           </div>       )   } } export default App 

тЦНReshenie


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, handleChange() рдкрджреНрдзрддрд┐ рдкрд░ рдХреЙрд▓ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рддрдВрддреНрд░ рдмрдирд╛рдПрдВред рдЕрд░реНрдерд╛рддреН, рд╣рдо рдЗрд╕реЗ рдЗрд╕ рд░реВрдк рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ:

 handleChange(id) {   console.log("Changed", id) } 

рдЕрдм рд╣рдо рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 2 рдФрд░ 3 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рд╣рдо рдЭрдВрдбреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдФрд░ рдЗрд╕ рдЭрдВрдбреЗ рдХреА id рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде handleChange() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдПрдВрдЧреЗред

handleChange() рдШрдЯрдХ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП handleChange() рд╕рдВрджрд░реНрдн рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдгреЛрдВ рдХреЗ рд╕рдорд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдШрдЯрдХреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 const todoItems = this.state.todos.map(item => <TodoItem key={item.id} item={item} handleChange={this.handleChange}/>) 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ handleChange рдкреНрд░реЙрдкрд░реНрдЯреА, рдЬреЛ handleChange рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА, рдореЗрдВ App рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ handleChange рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИред TodoItem рдШрдЯрдХ рдореЗрдВ, рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЕрдиреНрдп рдЧреБрдг рдЗрд╕рдХреЗ рдкрд╛рд╕ рдЧрдП рдереЗред рдЗрд╕ рд╕реНрддрд░ рдкрд░, TodoItem рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 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 

рдШрдЯрдХ рдХреЛрдб рдореЗрдВ handleChange рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд░рдкрддреНрд░ props.handleChange() рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рд╡рд┐рдзрд┐ id рддрддреНрд╡ рдХреА id рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред onChange рдИрд╡реЗрдВрдЯ onChange рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ handleChange() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдЙрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рддрддреНрд╡ рдХреЛ onChange рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

 onChange={(event) => props.handleChange(props.item.id)} 

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

 onChange={() => props.handleChange(props.item.id)} 

рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░, рдХрдВрд╕реЛрд▓ рдХреЛ рдЦреЛрд▓рдХрд░, рдЪреЗрдХрдмреЙрдХреНрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред


рд╣реИрдВрдбрд▓рдЪреЗрдВрдЬ () рд╡рд┐рдзрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг

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

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕ рд░рд╛рдЬреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд░рд╛рдЬреНрдп рдореЗрдВ рдПрдХ рд╕рд░рдгреА рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдПрдХ рддрддреНрд╡, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдзреНрд╡рдЬ рдкрд░ рдПрдХ рдХреНрд▓рд┐рдХ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ, рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд░рд╛рдЬреНрдп рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рд░рдгреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд░рд╛рдЬреНрдп рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА completed рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдпрд╣ рдЪрд╛рд╣рд┐рдП рдХрд┐, рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдирдИ рд╕рд░рдгреА рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рддрддреНрд╡ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдмрд╛рдХреА рд╕рднреА рд╡рд╣реА рд░рд╣реЗрдВрдЧреЗ рдЬреЛ рдкрд╣рд▓реЗ рдереЗред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ map() рд╕рд░рдгреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдп рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред рд╣рдо setState() рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗред рдЖрдЗрдП, App рдШрдЯрдХ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ handleChange() рд╡рд┐рдзрд┐ handleChange() рдХреЛрдб handleChange() :

 handleChange(id) {   this.setState(prevState => {         }) } 

рдЕрдм, map() рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо prevState.todos рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ prevState.todos рдФрд░ рдЙрд╕ рддрддреНрд╡ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, handleChange() , рдЬрд┐рд╕рдХреА id handleChange() рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдИ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреА completed рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓ рджреЗрдВред map() рд╡рд┐рдзрд┐ рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдирдИ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рд╕рд░рдгреА рдХреЛ рдПрдХ рд╕реНрдерд┐рд░ рдкрд░ рд▓рд┐рдЦреЗрдВрдЧреЗред рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 handleChange(id) {   this.setState(prevState => {       const updatedTodos = prevState.todos.map(todo => {           if (todo.id === id) {               todo.completed = !todo.completed           }           return todo       })       return {           todos: updatedTodos       }   }) } 

рдпрд╣рд╛рдВ, map() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рд░рдгреА рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдпрджрд┐ рдХреЛрдИ рддрддреНрд╡ рдЬрд┐рд╕рдХреА id id рдХреЗ handleChange() рд╡рд┐рдзрд┐ рдХреЗ рдмрд░рд╛рдмрд░ handleChange() , рдХрд╛ handleChange() рдЬрд╛рддрд╛ handleChange() , рддреЛ рдЗрд╕ рддрддреНрд╡ рдХреА completed рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдЙрд▓рдЯ рд╣реЛрддрд╛ рд╣реИ ( true рд╕реЗ false рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд)ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЪрд╛рд╣реЗ рддрддреНрд╡ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдлрд┐рд░ рднреА, map() рдЙрд╕ рддрддреНрд╡ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рдЙрд╕реА рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рддрд╣рдд рдПрдХ рдирдП рд╕рд░рдгреА ( updatedTodos рд╕реНрдерд┐рд░рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡) рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рддрд╣рдд рд░рд╛рдЬреНрдп рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рддрддреНрд╡ updatedTodos рд╕рд░рдгреА рдореЗрдВ рдерд╛ред рдкреВрд░реЗ рд╕рд░рдгреА рд╕реНрдХреИрди рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ updatedTodos рд╕рд░рдгреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрди рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ setState() рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА setState() рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд░рд╛рдЬреНрдп рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред

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

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


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

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЖрдЬ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рдо рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛?

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


All Articles