рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ Vue рдХреА рддреБрд▓рдирд╛

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

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



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

рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╛рд╡рдзрд╛рди



Vue рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛?

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

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


Vue рдФрд░ React рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди

рдпрд╣рд╛рдБ рдЗрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИрдВ: Vue ToDo , React ToDo ред

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


Vue рдФрд░ React рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрди рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИред рдПрдХрдорд╛рддреНрд░ рдкреНрд░рдореБрдЦ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рддреАрди рд╕реАрдПрд╕рдПрд╕ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдЬрдмрдХрд┐ Vue рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ create-react-app рдХрд╛ рдЙрдкрдпреЛрдЧ create-react-app , React рдШрдЯрдХ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕реБрд╕рдЬреНрдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ Vue CLI рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрддрд╛ рд╣реИ рдЬрдм рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рдЖрдЗрдП рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ Vue рдФрд░ React рдШрдЯрдХ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ Vue рдШрдЯрдХ рдХреЛрдб рд╣реИ (рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдпрд╣ ToDoItem.vue рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ)ред

 <template>   <div class="ToDoItem">       <p class="ToDoItem-Text">{{todo.text}}</p>       <div class="ToDoItem-Delete"            @click="deleteItem(todo)">-       </div>   </div> </template> <script>   export default {       name: "to-do-item",       props: ['todo'],       methods: {           deleteItem(todo) {               this.$emit('delete', todo)           }       }   } </script> <style>   .ToDoItem {       display: flex;       justify-content: center;       align-items: center;   }   .ToDoItem-Text {       width: 90%;       background-color: white;       border: 1px solid lightgrey;       box-shadow: 1px 1px 1px lightgrey;       padding: 12px;       margin-right: 10px;   }   .ToDoItem-Delete {       width: 20px;       padding: 5px;       height: 20px;       cursor: pointer;       background: #ff7373;       border-radius: 10px;       box-shadow: 1px 1px 1px #c70202;       color: white;       font-size: 18px;       margin-right: 5px;   }   .ToDoItem-Delete:hover {       box-shadow: none;       margin-top: 1px;       margin-left: 1px;   } </style> 

рдпрд╣рд╛рдБ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ ( ToDoItem.js рдлрд╝рд╛рдЗрд▓) рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИред

 import React, {Component} from 'react'; import './ToDoItem.css'; class ToDoItem extends Component {   render() {       return (           <div className="ToDoItem">               <p className="ToDoItem-Text">{this.props.item}</p>               <div className="ToDoItem-Delete" onClick={this.props.deleteItem}>-</div>           </div>       );   } } export default ToDoItem; 

рдЕрдм рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдбреЗрдЯрд╛ рд╕рдВрд╢реЛрдзрди рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?


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

рдпрд╣ рд╡реЗрд╡ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА data рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

 data() {     return {         list: [             {               todo: 'clean the house'             },             {               todo: 'buy milk'             }         ],     } }, 

рдпрд╣рд╛рдБ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╡рд╕реНрддреБ рдХреНрдпрд╛ рд╣реИ:

 constructor(props) {       super(props);       this.state = {           list: [               {                   'todo': 'clean the house'               },               {                   'todo': 'buy milk'               }           ],       };   }; 

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

рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ name: 'Sunil' рддрд░рд╣ рдПрдХ рдбреЗрдЯрд╛ рддрддреНрд╡ рд╣реИ name: 'Sunil' ред рдлрд┐рд░ рдореИрдВрдиреЗ name рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрдкрдирд╛ name рд╕реМрдВрдкрд╛ред

Vue рдореЗрдВ, рдЖрдк рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдмрджрд▓рдирд╛ рд╣реИ: this.name = 'John' ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореЗрд░рд╛ рдирд╛рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рдореБрдЭреЗ рдХреИрд╕рд╛ рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╡реАрдпреВ рдореЗрдВ рдпрд╣ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрдк рдЗрд╕ this.state.name рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рд▓рд┐рдЦрдХрд░ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рдирд╛ this.state.name = 'John' рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ рдЬреЛ рдРрд╕реЗ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ this.setState({name: 'John'}) ред

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

рдЕрдм рдЦреБрдж рд╕реЗ рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдЗрддрдирд╛ setState рдХреНрдпреЛрдВ setState рдФрд░ setState рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдЖрдк рд░реЗрд╡рдВрдд рдХреБрдорд╛рд░ рд╕реЗ рдЗрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: тАЬрдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ рд░рд╛рдЬреНрдп рдореЗрдВ рдПрдХ рдмрджрд▓рд╛рд╡ рдкрд░, рдХреБрдЫ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреЗ рд╣реБрдХ, рдЬреИрд╕реЗ рдХрд┐ componentWillReceiveProps shouldComponentUpdate , shouldComponentUpdate , componentWillUpdate , render , componentDidUpdate рдкреБрди: рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк setState рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ setState рд╣реИред рдпрджрд┐ рдЖрдк рд╕реАрдзреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдереЗ, рддреЛ рд░рд┐рдПрдХреНрдЯ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реБрдХ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЬреАрд╡рди рдХреЛ setState рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ setState рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ setState ред тАЭ

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

рдЯреВ-рдбреВ рд╕реВрдЪреА рдореЗрдВ рдирдИ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗрдВ


тЦНReact


рдпрд╣рд╛рдБ рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдХреИрд╕реЗ рдХрд░реЗрдВред

 createNewToDoItem = () => {   this.setState( ({ list, todo }) => ({     list: [         ...list,       {         todo       }     ],     todo: ''   }) ); }; 

рдпрд╣рд╛рдВ рдбреЗрдЯрд╛ input ( input ) рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреНрд╖реЗрддреНрд░, рд╡рд┐рд╢реЗрд╖рддрд╛ value ред рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╣рд▓рд╛рддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ - рдереЛрдбрд╝рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВ, рд╣рдо Vue рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ)ред рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рджреЛ-рддрд░рдлрд╝рд╛ рд╕рдВрдЪрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ input рдлрд╝реАрд▓реНрдб рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд onChange рдИрд╡реЗрдВрдЯ onChange рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рддрд╛рдХрд┐ рдЖрдк рд╕рдордЭ рд╕рдХреЗрдВ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

 <input type="text"      value={this.state.todo}      onChange={this.handleInput}/> 

input рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ handleInput рдлрд╝рдВрдХреНрд╢рди handleInput рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ todo рддрддреНрд╡ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ input рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореМрдЬреВрдж рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ, state рд╡рд╕реНрддреБ рдХреЗ рдЕрдВрджрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ handleInput рдлрд╝рдВрдХреНрд╢рди рджрд┐рдЦрддрд╛ рд╣реИред

 handleInput = e => { this.setState({   todo: e.target.value }); }; 

рдЕрдм, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЗрдЬ рдкрд░ + рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ createNewToDoItem рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ this.setState рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ state рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдкреВрд░реА list рд╕рд░рдгреА рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ handleInput рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ todo рддрддреНрд╡ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рддрдм рдПрдХ рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреБрд░рд╛рдиреА list рд╕рд░рдгреА рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕ рд╕рд░рдгреА рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдирдпрд╛ todo рддрддреНрд╡ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд╛рдо spread рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдорд┐рд▓реЗ, рддреЛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ ES6 рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВ)ред

рдЕрдВрдд рдореЗрдВ, рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ todo рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ input рдХреНрд╖реЗрддреНрд░ рдореЗрдВ value рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

тЦНVue


Vue рдореЗрдВ рдЯреВ-рдбреВ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдирдпрд╛ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 createNewToDoItem() {   this.list.push(       {           'todo': this.todo       }   );   this.todo = ''; } 

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

 <input type="text" v-model="todo"/> 

v-model рдирд┐рд░реНрджреЗрд╢ рдПрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдПрдХ рдХреБрдВрдЬреА рд╕реЗ рдмрд╛рдВрдзрддрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ toDoItem рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЦрд╛рд▓реА рд▓рд╛рдЗрди toDoItem рдореЗрдВ рд▓рд┐рдЦреА toDoItem , рдпрд╣ todo: '' рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ todo: '' ред

рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдбреЗрдЯрд╛ рд╣реИ, todo: 'add some text here' рддрд░рд╣ рдХреБрдЫ todo: 'add some text here' , рддреЛ рд╡рд╣реА рдкрд╛рда рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛, рд╡рд╣ рд╣реИ - 'add some text here' ред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрджрд┐ рд╣рдо рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЬрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛, рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг, todo рдкреНрд░реЙрдкрд░реНрдЯреА рдореЗрдВред рдпрд╣ рдПрдХ рджреЛ-рддрд░рдлрд╝рд╛ рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирдП рдбреЗрдЯрд╛ рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рд╕реЗ data рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ, рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИред

рдЕрдм createNewToDoItem() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдКрдкрд░ рдмрд╛рдд рдХреА рдереАред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо list рд╕рд░рдгреА рдореЗрдВ todo рдХреА рд╕рд╛рдордЧреНрд░реА рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ todo рд▓рд┐рдП рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рдХрд┐рд╕реА рд╕реВрдЪреА рд╕реЗ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓рдирд╛


тЦНReact


рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдСрдкрд░реЗрд╢рди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 deleteItem = indexToDelete => {   this.setState(({ list }) => ({     list: list.filter((toDo, index) => index !== indexToDelete)   })); }; 

рдЬрдмрдХрд┐ deleteItem рдлрд╝рдВрдХреНрд╢рди ToDo.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ, рдЖрдк рдЗрд╕реЗ ToDoItem.js рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ <ToDoItem/> ред рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 <ToDoItem deleteItem={this.deleteItem.bind(this, key)}/> 

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

 <div className="ToDoItem-Delete" onClick={this.props.deleteItem}>-</div> 

рдореВрд▓ рдШрдЯрдХ рдореЗрдВ рд╕реНрдерд┐рдд рдлрд╝рдВрдХреНрд╢рди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред this.props.deleteItem рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

тЦНVue


Vue рдореЗрдВ рдХрд┐рд╕реА рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЛ рд╣рдЯрд╛рдирд╛ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 onDeleteItem(todo){ this.list = this.list.filter(item => item !== todo); } 

Vue рдХреЛ рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрд░реНрдерд╛рддреН, рддреАрди рдХрджрдо рдЙрдард╛рдП рдЬрд╛рдиреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдЙрд╕ рддрддреНрд╡ рдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

 <div class="ToDoItem-Delete" @click="deleteItem(todo)">-</div> 

рдлрд┐рд░ рдЖрдкрдХреЛ рдмрдЪреНрдЪреЗ рдХреЗ рдШрдЯрдХ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, ToDoItem.vue ) рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ ToDoItem.vue рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред

 deleteItem(todo) {   this.$emit('delete', todo) } 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо ToDoItem.vue рдЕрдВрджрд░ ToDoItem.vue рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред

 <ToDoItem v-for="todo in list"         :todo="todo"         @delete="onDeleteItem" // <-- this :)         :key="todo.id" /> 

рдЗрд╕реЗ рд╣реА рдХрд╕реНрдЯрдо рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ delete рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд╛ emit рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ рд╕рдорд╛рди рдШрдЯрдирд╛ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдпрд╣ onDeleteItem рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ ToDo.vue рдЕрдВрджрд░ рд╕реНрдерд┐рдд рд╣реИ, рдФрд░ ToDoItem.vue рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд╕ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдП рдЧрдП рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП data рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдерд┐рдд todo рд╕рд░рдгреА рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ Vue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЛрдИ рдХреЗрд╡рд▓ @click рдЕрдВрджрд░ emit рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддрд╛ @click ред рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

 <div class="ToDoItem-Delete" @click="$emit('delete', todo)">-</div> 

рдЗрд╕рд╕реЗ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЛ рддреАрди рд╕реЗ рджреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЪрд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдВ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред

рдЗрд╕ рдЦрдВрдб рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореВрд▓ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЖрдпреЛрдЬрди this.props рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред this.props (рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ props рдХреЛ рдмрд╛рд▓ рдШрдЯрдХреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдорд╛рдирдХ рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред Vue рдореЗрдВ, рдмрдЪреНрдЪреЗ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ emit рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


тЦНReact


рд░рд┐рдПрдХреНрдЯ рдореЗрдВ, рдХреБрдЫ рд╕рд╛рдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛, рдПрдХ рдХреНрд▓рд┐рдХ рдЗрд╡реЗрдВрдЯ рдХреА рддрд░рд╣, рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХ рдмрдЯрди рдХреЗ рд▓рд┐рдП click рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдПрдХ рдирдпрд╛ рдЯреВ-рдбреВ рдЖрдЗрдЯрдо рдмрдирд╛рддрд╛ рд╣реИред

 <div className="ToDo-Add" onClick={this.createNewToDoItem}>+</div> 

рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╢реБрджреНрдз рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред

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

 <input type="text" onKeyPress={this.handleKeyPress}/> 

рдЬрдм рдпрд╣ Enter рдкрд░ createNewToDoItem рдХреЛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ, createNewToDoItem рдлрдВрдХреНрд╢рди handleKeyPress рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

 handleKeyPress = (e) => { if (e.key === 'Enter') { this.createNewToDoItem(); } }; 

тЦНVue


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

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

 <div class="ToDo-Add" @click="createNewToDoItem()">+</div> 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ @click v-on:click рд▓рд┐рдП рдЫреЛрдЯрд╛ рд╣реИ v-on:click ред Vue рдЗрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЛ рдмрд╣реБрдд рд╕реВрдХреНрд╖реНрдорддрд╛ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢реНрд░реЛрддрд╛ рдХреЗ рд▓рд┐рдП .once рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди .once рдХрд░рдиреЗ рд╕реЗ рд╢реНрд░реЛрддрд╛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдлрд╛рдпрд░ рдХрд░реЗрдЧрд╛ред

рдРрд╕реЗ рдХрдИ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╣реИрдВ рдЬреЛ рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рд▓реЗрдЦрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХреАрдмреЛрд░реНрдб рдкрд░ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдХрд╣рд╛ рд╣реИ, рдпрд╣ Vue рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 <input type="text" v-on:keyup.enter="createNewToDoItem"/> 

рдмрд╛рд▓ рдШрдЯрдХреЛрдВ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛


тЦНReact


рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЧреБрдгреЛрдВ рдХреЛ рдмрд╛рд▓ рдШрдЯрдХ рдХреЗ рдкрд╛рд╕ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 <ToDoItem key={key} item={todo} /> 

рдпрд╣рд╛рдВ рдЖрдк ToDoItem рдШрдЯрдХ рдХреЛ рдкрд╛рд░рд┐рдд рджреЛ рдЧреБрдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рд╕реЗ, рдЙрдиреНрд╣реЗрдВ this.props рдШрдЯрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд▓ рдШрдЯрдХ рдореЗрдВ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ this.props ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, item.todo рдкреНрд░реЙрдкрд░реНрдЯреА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ item.todo рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

тЦНVue


Vue рдореЗрдВ, рдЧреБрдгреЛрдВ рдХреЛ рдмрд╛рд▓ рдШрдЯрдХреЛрдВ рдХреЛ рднреА рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╡реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред

 <ToDoItem v-for="todo in list"           :todo="todo"           :key="todo.id"           @delete="onDeleteItem" /> 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡реЗ рдмрдЪреНрдЪреЗ рдХреЗ рдШрдЯрдХ рдХреЗ props рд╕рд░рдгреА рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, props: [ 'todo' ] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП props: [ 'todo' ] рдирд┐рд░реНрдорд╛рдгред рдЖрдк рдЗрди рдЧреБрдгреЛрдВ рдХреЛ рдирд╛рдо рд╕реЗ рдмрд╛рд▓ рдШрдЯрдХреЛрдВ рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ 'todo' рдирд╛рдо рд╣реИред

рдореВрд▓ рдШрдЯрдХ рдХреЛ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛


тЦНReact


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

тЦНVue


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

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


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

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

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

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


All Articles