vue 2 와 vue 3 의 v-if 와 v-for 우선 순위 비교 학습
v-if
과v-for
이기 때문에 우 리 는 그것들 을 동시에 사용 하고 싶 을 것 이다.비록 정부 에서 이렇게 하 는 것 을 건의 하 지 는 않 지만,때로는 확실히 필요 하 다.우 리 는 그들의 업무 방식 을 알 아 보 자.v-if
와v-for
를 동시에 사용 할 때v-for
가 우선 합 니 다.v-if
는 항상v-for
보다 우선 적 으로 효력 이 발생 한다.그 다음 에 우 리 는 간단 한 예 시 를 통 해 우리 가 아주 간단 한 todoList 효 과 를 실현 하고 싶다 고 가정 한다.
우 리 는 todoList 가 있 습 니 다.
const todoList = [
{
id: 0,
task: ' ',
done: true,
},
{
id: 1,
task: ' ',
done: false,
},
{
id: 2,
task: ' ',
done: true,
},
// ...,
];
vue 2 에서v-for
우선 순위 가v-if
보다 높 으 면 우 리 는 이렇게 실현 할 수 있다.
<ul>
<!-- vue2 ,v-for v-if -->
<li v-for="item in todoList" v-if="!item.done" :class="{todo: !item.done}" :key="item.id">
<span>{{item.task}}</span>
</li>
</ul>
<ul>
<li v-for="item in todoList" v-if="item.done" :class="{finished: item.done}" :key="item.id">
<span>{{item.task}}</span>
</li>
</ul>
vue 3 에 서 는v-if
우선 순위 가v-for
보다 높 기 때문에 vue 2 처럼v-for
와v-if
를 같은 요소 에 놓 을 수 없습니다.우 리 는li
밖 에 for 순환 을 수행 하 는 데 사용 합 니 다.
<ul>
<template v-for="item in list" :key="item.id">
<li v-if="!item.done" :class="{todo: !item.done}">
<span>{{item.task}}</span>
</li>
</template>
</ul>
<ul>
<template v-for="item in list" :key="item.id">
<li v-if="item.done" :class="{finished: item.done}">
<span>{{item.task}}</span>
</li>
</template>
</ul>
vue 2.x 에서v-if
와v-for
가 같은 요소 에서 사용 하면 vue 3.x 에서 직접 호 환 할 수 없 음 을 알 수 있다.최선 의 실천
v-if
와v-for
의 사용 에 대해 정 부 는 우리 에 게 계산 속성 을 사용 하여 처리 하 라 고 건의 했다.그러면 성능 도 향상 시 킬 뿐만 아니 라 vue 3.x 까지 호 환 할 수 있다.그 다음 에 우 리 는 계산 속성 실현 방식 을 살 펴 보 자.템 플 릿 부분:
<div id="app">
<!-- -->
<ul class="todo-list">
<li v-for="item in todos" class="todo" :key="item.id">
<span>{{item.task}}</span>
</li>
</ul>
<ul v-if="showFinished">
<li v-for="item in finished" :key="item.id" class="finished">
<span>{{item.task}}</span>
</li>
</ul>
<p>
show finished?
<input type="checkbox" v-model="showFinished" />
{{showFinished ? 'yes' : 'no'}}
</p>
</div>
js 부분:
// vue3.x
Vue.createApp({
data() {
return {
msg: 'Todo List',
showFinished: true,
list: todoList,
};
},
computed: {
finished() {
return todoList.filter(t => t.done);
},
todos() {
return todoList.filter(t => !t.done);
},
},
}).mount('#app');
// vue2.x
new Vue({
el: '#app',
data() {
return {
msg: 'Todo List',
showFinished: true,
list: todoList,
};
},
computed: {
finished() {
return todoList.filter(t => t.done);
},
todos() {
return todoList.filter(t => !t.done);
},
},
});
클릭 하여 보기:vue 3 예시,vue 2 예시총결산
v-for
우선 순위 가v-if
보다 높 고 vue 3.x 는 반대 이다.v-if
과v-for
을 피하 고 계산 속성 으로 대체 하 는 것 을 권장 합 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
vue 학습 노트 의 v-if 와 v-show 의 차이v-if 는'진정한'조건 렌 더 링 입 니 다.전환 과정 에서 조건 블록 안의 이벤트 모니터 와 하위 구성 요소 가 적당 하 게 소각 되 고 재 구축 되 는 것 을 확보 하기 때 문 입 니 다. 이에 비해 v-sho...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.