проп, который вглубь передается?
Layout.vue -> <SidebarLarge v-model:visible="sidebarVisible" ../>
SidebarLarge.vue -> <Sidebar v-model:visible="visible" ../>
Это не будет работать, так как проп будет мутироваться внутри SidebarLarge, поэтому внутри SidebarLarge надо заменить на
<Sidebar :visible="visible" @update:visible="$emit('update:visible', $event) ../>
Есть ли какая-то возможность избежать этой копипасты?
Можно сделать вычисляемое свойство с геттером и сеттером, в которых тоже самое, что во втором варианте в шаблоне, но кода будет столько же
Эх, надеялся, что есть какой-то изящный способ, раз такая ситуация типовая, но проще тогда так оставить
изящнее можно через provide/inject, но в данном случае это только усложнит понимание взаимодействия компонентов, поэтому обычный v-model - самый оптимальный вариант но лично я бы его вынес в computed, как Григорий сказал выше, шаблон будет сильно чище
Имхо provide/inject лучше вообще избегать в обычных проектах, то ли вычитал где-то, то ли сам допер, что это как-то разве что для библиотек можно использовать, и не очень больших
Есть RFC на более изящный вариант)
Эту плашку из доки уже убрали)
в provide/inject нет ничего плохого, если применять это с умом в новой доке к тройке есть хорошее объяснение: о них можно думать, как о пропах дальнего действия
Я пока не готов к такому, если я начну использовать это, то выйдут отличные спагетти
Обсуждают сегодня