потому что
Друг в группе попросил сцену, там много просмотров, которые нужно контролировать, чтобы показать и скрыть (Представления могут отображаться одновременно), обычной практикой является использование переменной для управления каждым представлением, но в этом случае она будет соответствовать методам переключения каждой управляющей переменной, что сделает код очень раздутым и неизменно поддерживаемым, поэтому какой метод можно использовать для Как насчет более элегантного решения этой проблемы?
Общая практика (не рекомендуется, когда много просмотров)
// 这里使用v-show比v-if更合适
template:
<div v-if="show1" class="class-1"></div>
<div v-if="show2" class="class-2"></div>
<div v-if="show3" class="class-3"></div>
script:
data = {
return {
show1: false,
show2: false,
show3: false
}
},
methods: {
changeShow1 () {
},
changeShow2 () {
},
changeShow3 () {
}
}
// 控制显示隐藏
this.show1 = true
this.show2 = true
this.show3 = false
// 再切换一次
this.show1 = true
this.show2 = false
this.show3 = true
думать
Так можно ли использовать переменную для управления отображением и скрытием этих представлений? Есть ли что-то похожее на свойства if?
Условие оценки if является логическим типом. Если вы посмотрите на false == 0 и true == 1, вы можете фактически преобразовать элемент управления if в двоичный элемент управления. Давайте посмотрим на простой реализованный код.
продвинутая практика
template:
<div v-if="showCtl(0)" class="class-1"></div>
<div v-if="showCtl(1)" class="class-2"></div>
<div v-if="showCtl(2)" class="class-3"></div>
script:
data = {
return {
ctlNum: 0 // 1: show class-1, 2: show class-2, 4: show class-3
}
},
methods: {
showCtl(num) {
return this.ctlNum >> num & 1
}
}
// 控制显示隐藏
this.ctlNum = 1 + 2 // 显示第一项 & 第二项
// 再切换一次
this.ctlNum = 2 + 4 // 显示第二项 & 第三项
Этот код должен быть хорошо понят, то есть для управления отображением и скрытием посредством бинарного сдвига, значение ctlNum может быть [0, 7], есть 8 комбинаций, охватывающих все ситуации отображения и скрытия, но этот метод используется в коде.удобочитаемостьЭто точно не хорошо, например, мы можем сделать это (но на самом деле я предпочитаю добавлять комментарии к приведенной выше схеме)
лишнее улучшение
template:
<div v-if="showCtl(0)" class="class-1"></div>
<div v-if="showCtl(1)" class="class-2"></div>
<div v-if="showCtl(2)" class="class-3"></div>
script:
const SHOW1 = 1 << 0 // 显示视图1
const SHOW2 = 1 << 1 // 显示视图2
const SHOW3 = 1 << 2 // 显示视图3
data = {
return {
ctlNum: 0 // 1: show class-1, 2: show class-2, 4: show class-3
}
},
methods: {
showCtl(num) {
return this.ctlNum >> num & 1
}
}
// 控制显示隐藏
this.ctlNum = SHOW1 + SHOW2 // 显示第一项 & 第二项
// 再切换一次
this.ctlNum = SHOW2 + SHOW3 // 显示第二项 & 第三项
Это выглядит код изменился много, хотя и лишний, но практика сделает код более читаемым номером.
Конечно, если это тот же тип представления, его можно дополнительно оптимизировать, внедрив его.
v-для циклов, затем проходит вызов showCtl(item.num)
Небольшой навык программирования может и не иметь большого значения, и в реальных проектах он используется редко, только для развития идей, уровень ограничен, надеюсь, всем пригодится.
Github: github.com/lyh2668
AuthBy: lyh2668
Накапливайте понемногу каждый день, надеясь на день преображения