рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓реЗрдЦрдХ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдХрд╛рдо рдкрд░ 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) , ], }; };
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдо рдПрдХ рд╣реА рдбреЗрдЯрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдмрд╕ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВред рдирддреАрдЬрддрди, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ 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 рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдирдЧреНрди рдЖрдВрдЦреЛрдВ рдХреЗ рд▓рд┐рдПред
рдмреЗрд╢рдХ, рд░рд┐рдПрдХреНрдЯ рдФрд░ рд╡реАрдпреВ рдХреЗ рдмреАрдЪ рдХрдИ рдЕрдиреНрдп рдЫреЛрдЯреЗ рдЕрдВрддрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдордиреЗ рдпрд╣рд╛рдВ рдЬреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдХрд┐ рдпреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреБрдирддреЗ рд╕рдордп рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЕрдХреНрд╕рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЪреБрдирд╛рд╡ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреАред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЖрдкрдХреА рд░рд╛рдп рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рдФрд░ рд╡реАрдпреВ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИрдВ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд░реВрдкрд░реЗрдЦрд╛ рдХреА рдкрд╕рдВрдж рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ?
