Короткий ответ - нет - в Svelte изменения отслеживаются на верхнем уровне (компонента или хранилища ), так как мониторинг вложенных свойств отдельно потребует намного больше кода и внутренней книги.-keeping.Поэтому fieldLength
будет пересчитываться при каждом изменении field
(где «изменение» может означать либо новый объект, либо мутацию существующего, если вы не используете опцию immutable ).Ничто из того, что зависит от fieldLength
, не будет обновлено, если только длина не изменилась.
Более длинный ответ состоит в том, что ({field.values.length}) => ...
является недопустимым JavaScript, но есть действительный (если зрительносбивающий с толку) способ выразить ту же идею:
fieldLength: ({field:{values:{length}}}) => length
возможно , чтобы будущие версии Svelte могли отслеживать вложенные свойства и пересчитывать только значения при их изменении - если это так, это будетвыяснить, какие вложенные свойства были зависимостями, используя этот синтаксис деструктурирования.Но независимо от наших будущих намерений, это подход, который будет работать сегодня, хотя иногда и с ненужными перерасчетами.