-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Решение задач #4
Conversation
Добавляю преподавателя (@ShGKme) для код-ревью. |
Решение было обновлено, посмотрим что скажет @ShGKme |
…rand и secondOperand = null.
Решение было обновлено, посмотрим что скажет @ShGKme |
02-basics-2/20-broken-map/MapApp.js
Outdated
watch([x, y], () => { | ||
watch([pin, x, y], () => { | ||
// Находим метку и изменяем её положение | ||
const map = document.querySelector('.pin') | ||
map.style.left = `${x}px` | ||
map.style.top = `${y}px` | ||
pin.value.left = `${x.value}px` | ||
pin.value.top = `${y.value}px` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Этот watch
не очень корректный.
Во-первых, в списке его зависимостей есть pin
, который и вычисляется внутри этого watch
. Vue здесь защищается от бесконечной рекурсии, но изменение pin
не может быть причиной изменения pin
.
Во-вторых, этот watch
реализует pin
как вычисляемое свойство. Есть реактивная переменная pin
, в которой хранится результат вычисления от x
и y
. И она всегда обновляется при изменении зависимостей вычисления - x
и y
. Это классический computed
.
Такие свойства нужно реализовывать именно как вычисляемое свойство computed
:
- Это явно. Так
pin
будет описан именно как вычисляемое значение, а не как самостоятельная переменная с собственным значением - Не нужно самостоятельно определять зависимости отслеживания и контролировать корректность списка зависимостей
- Эффективнее - вычисляемые свойства ленивые и вычисляются только, когда к их значению обращаются
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Понял, исправил
Добавляю преподавателя (@ShGKme) для код-ревью. |
Решение было обновлено, посмотрим что скажет @ShGKme |
No description provided.