【Vue.js】 조건에 따라 표시할 리스트를 전환하는 샘플 코드
소개
다른 날 이 기사을 썼습니다.
여기에 등장한 코드에 추가하여 조건에 따라 표시할 목록을 전환하는 방법을 설명합니다.
환경
OS: macOS Catalina 10.15.1
Vue: 2.6.10
vue-router: 2.6.10
vuetify: 2.1.0
결론
Sample.vue
<template>
<v-list>
<v-list-item
v-for="item in selectedItems"
:key="item.id"
@click="triggerClick(item.action)"
>
<router-link :to="{ name: item.link }">
<v-list-item-title>
{{ item.name }}
</v-list-item-title>
</router-link>
</v-list-item>
</v-list>
</template>
<script>
export default {
data() {
return {
selectedPattern: 1, //ここで条件を切り替える
items: [
{id: 1, name: '1へのリンク', link: 'Component1', action: '', pattern: 1},
{id: 2, name: '2へのリンク', link: 'Component2', action: '', pattern: 2},
{id: 3, name: 'action1を実行', link: '', action: 'action1', pattern: 1},
{id: 4, name: 'action2を実行', link: '', action: 'action2', pattern: 2},
]
}
},
computed: {
/*
* filterを使って事前にリストを精査しておく
* patternが1か2かで表示する内容を変更
*/
selectedItems(){
return this.items.filter(item => item.pattern === this.selectedPattern)
}
},
methods: {
triggerClick(action) {
if (action === 'action1') {
anyAction1()
} else if (action === 'action2') {
anyAction2()
}
}
}
}
</script>
이 예에서는
selected
를 수동으로 1
로 설정했지만,응용 프로그램으로 Vuex에서 만든 상점에서
state
를 호출하고 그에 따라 목록을 전환하는 것과 같은 것도 가능합니다.※로그인하지 않으면 로그아웃을 표시하지 않는 등.
보충: v-if를 사용하지 않는 이유: 효율 악화
이번 패턴에서는 드디어
v-if
와 v-for
를 동시에 사용하면 전환 할 수있는 것은? 가 되기 쉽습니다만, 공식 문서에서는 비추천이 되고 있습니다.v-if와 v-for를 동시에 사용하는 것은 권장되지 않습니다. 자세한 내용은 스타일 가이드를 참조하십시오.
스타일 가이드에 따르면,
v-if
와 v-for
를 동시에 사용한 경우다시 렌더링할 때마다 전체 목록을 반복적으로 처리해야 합니다.
computed
속성에서 filter
를 사용한 경우필터링 된 목록은 배열과 관련된 변경 사항이있는 경우에만 재평가되므로 필터링이 훨씬 효율적입니다.
그리기 효율이 나빠져 버립니다
결론
끝까지 읽어 주셔서 감사합니다
누군가의 도움이 되길 바랍니다
참고로 한 사이트 (항상 감사합니다)
Reference
이 문제에 관하여(【Vue.js】 조건에 따라 표시할 리스트를 전환하는 샘플 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/terufumi1122/items/9089d2908d8b71119f3d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)