Vue를 사용하여 무한 목록을 구현하는 방법은 무엇입니까?
Vue는 현재 가장 인기 있는 프런트 엔드 프레임워크 중 하나이며, 편리한 데이터 바인딩과 유연한 구성 요소화 아이디어가 개발자들에게 선호됩니다. 개발 중에는 무한 목록을 표시해야 하는 시나리오가 자주 발생합니다. 이 기사에서는 Vue를 사용하여 무한 목록을 구현하는 방법을 소개합니다.
1. 데이터 구조 설계
무한 목록을 구현하려면 중첩된 데이터 구조가 필요합니다. 우리가 표시해야 하는 데이터 구조는 다음과 같다고 가정합니다.
[ {id: 1, name: '菜单1', parent_id: 0}, {id: 2, name: '菜单2', parent_id: 0}, {id: 3, name: '菜单1-1', parent_id: 1}, {id: 4, name: '菜单1-1-1', parent_id: 3}, {id: 5, name: '菜单1-2', parent_id: 1}, {id: 6, name: '菜单2-1', parent_id: 2}, {id: 7, name: '菜单1-1-1-1', parent_id: 4} ]
그 중 id
는 노드의 고유 식별자를 나타내고 name
은 노드 이름을 나타내며 >parent_id
는 노드의 상위 노드의 현재 id
를 나타냅니다. 0이면 루트 노드임을 의미합니다. id
表示节点的唯一标识,name
表示节点名称,parent_id
表示当前节点的父节点的 id
,如果为 0 则表示是根节点。
二、树状图的构建
我们需要将原始数据构建成一棵树状图结构,以便于后续的遍历和展示。可以定义一个递归的函数,将节点依次添加到对应的父节点中。
function buildTree(list, parentId) { let res = [] for (let i = 0; i < list.length; i++) { if (list[i].parent_id === parentId) { let children = buildTree(list, list[i].id) if (children.length) { list[i].children = children } res.push(list[i]) } } return res } let treeData = buildTree(list, 0)
三、列表的展示
Vue 提供了 v-for 指令用于循环渲染数据,我们可以使用递归组件来实现流畅的无限级列表展示。
在组件内,我们可以定义一个 <template>
标签,用于渲染当前节点及其子节点,如果当前节点存在子节点,则递归渲染子节点。在递归组件中,我们可以使用 props 来传递数据。
<template> <ul> <li v-for="item in list"> {{item.name}} <recursive :list="item.children"></recursive> </li> </ul> </template> <script> export default { name: 'recursive', props: { list: Array } } </script>
上述代码中,我们使用递归组件 recursive
,在循环渲染每个节点时,使用 <recursive>
标签对当前节点的子节点进行递归渲染。
四、节点的折叠和展开
无限级列表通常会有折叠和展开节点的功能,我们需要在组件中添加 isCollapsed
属性来表示当前节点是否折叠,并根据该属性来控制子节点的显示。
<template> <ul> <li v-for="item in list"> <div @click="isCollapsed = !isCollapsed">{{item.name}}</div> <recursive v-show="!isCollapsed" :list="item.children"></recursive> </li> </ul> </template> <script> export default { name: 'recursive', props: { list: Array }, data() { return { isCollapsed: true } } } </script>
上述代码中,我们在节点名称所在的 <div>
标签上添加了点击事件,点击时将 isCollapsed
属性取反,并使用 v-show
rrreee
3. 목록 표시Vue는 루프 렌더링 데이터에 대한 v-for 명령을 제공하여 원활한 무한 목록 표시를 달성할 수 있습니다. 🎜🎜구성 요소에서<template>
태그를 정의하여 현재 노드와 해당 하위 노드를 렌더링할 수 있습니다. 현재 노드에 하위 노드가 있으면 하위 노드가 재귀적으로 렌더링됩니다. 재귀 구성 요소에서는 소품을 사용하여 데이터를 전달할 수 있습니다. 🎜rrreee🎜위 코드에서는 재귀 구성 요소 recursive
를 사용합니다. 루프의 각 노드를 렌더링할 때 <recursive>
태그를 사용하여 하위 노드를 재귀적으로 렌더링합니다. 현재 노드의 . 🎜🎜4. 노드 접기 및 확장🎜🎜무한 목록에는 일반적으로 노드 접기 및 확장 기능이 있습니다. 현재 노드가 접혀 있는지 여부를 나타내기 위해 구성 요소에 isCollapsed
속성을 추가해야 합니다. 이 속성에 대해 하위 노드의 표시를 제어합니다. 🎜rrreee🎜위 코드에서는 노드 이름이 있는 <div>
태그에 클릭 이벤트를 추가했습니다. 클릭하면 isCollapsed
속성이 반전되고 사용된 >v-show는 하위 노드의 표시를 제어합니다. 🎜🎜5. 요약🎜🎜위의 예를 통해 Vue에서 무한 목록을 구현하는 세 가지 주요 단계, 즉 데이터 구조 설계, 트리 다이어그램 구성 및 목록 표시를 이해할 수 있습니다. 동시에 노드의 접기 및 확장 기능을 추가하여 대화형 효과를 얻는 방법도 소개했습니다. 🎜🎜무한 레벨 목록의 구현은 전형적인 Vue 컴포넌트 개발 사례입니다. 이 사례에 대한 심층적인 이해는 Vue 개발 기술과 레벨을 향상시키는 데 도움이 될 수 있으며 컴포넌트 설계 및 개발에 유용한 참고 자료도 제공할 수 있습니다. 🎜위 내용은 Vue를 사용하여 무한 목록을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Vue에서 ECharts를 사용하면 애플리케이션에 데이터 시각화 기능을 쉽게 추가할 수 있습니다. 특정 단계에는 ECharts 및 Vue ECharts 패키지 설치, ECharts 소개, 차트 구성 요소 생성, 옵션 구성, 차트 구성 요소 사용, Vue 데이터에 반응하는 차트 만들기, 대화형 기능 추가 및 고급 사용법이 포함됩니다.

질문: Vue에서 내보내기 기본값의 역할은 무엇입니까? 자세한 설명: 내보내기 기본값은 구성 요소의 기본 내보내기를 정의합니다. 가져올 때 구성 요소를 자동으로 가져옵니다. 가져오기 프로세스를 단순화하고 명확성을 높이며 충돌을 방지합니다. 개별 구성 요소를 내보내고, 명명된 내보내기와 기본 내보내기를 모두 사용하고, 전역 구성 요소를 등록하는 데 일반적으로 사용됩니다.

Vue.js 맵 함수는 각 요소가 원래 배열의 각 요소를 변환한 결과인 새 배열을 생성하는 내장된 고차 함수입니다. 구문은 map(callbackFn)입니다. 여기서 callbackFn은 배열의 각 요소를 첫 번째 인수로 받고 선택적으로 인덱스를 두 번째 인수로 받아 값을 반환합니다. map 함수는 원래 배열을 변경하지 않습니다.

Vue.js에서 event는 브라우저에 의해 트리거되는 기본 JavaScript 이벤트인 반면, $event는 Vue 구성 요소에서 사용되는 Vue 관련 추상 이벤트 객체입니다. $event는 데이터 바인딩을 지원하도록 형식이 지정되고 향상되었으므로 일반적으로 $event를 사용하는 것이 더 편리합니다. 기본 이벤트 객체의 특정 기능에 액세스해야 하는 경우 이벤트를 사용하세요.

Vue.js에서 모듈을 내보내는 방법에는 내보내기와 기본값 내보내기라는 두 가지 방법이 있습니다. 내보내기는 명명된 엔터티를 내보내는 데 사용되며 중괄호를 사용해야 합니다. 내보내기 기본값은 기본 엔터티를 내보내는 데 사용되며 중괄호가 필요하지 않습니다. 가져올 때 내보내기로 내보낸 엔터티는 해당 이름을 사용해야 하는 반면, 내보내기 기본값으로 내보낸 엔터티는 암시적으로 사용될 수 있습니다. 여러 번 가져와야 하는 모듈에는 내보내기 기본값을 사용하고, 한 번만 내보내는 모듈에는 내보내기를 사용하는 것이 좋습니다.

onMounted는 Vue의 구성 요소 마운팅 라이프 사이클 후크입니다. 해당 기능은 DOM 요소에 대한 참조 가져오기, 데이터 설정, HTTP 요청 전송, 이벤트 리스너 등록 등과 같은 구성 요소가 DOM에 마운트된 후 초기화 작업을 수행하는 것입니다. 구성 요소가 마운트될 때 한 번만 호출됩니다. 구성 요소가 업데이트된 후 또는 삭제되기 전에 작업을 수행해야 하는 경우 다른 수명 주기 후크를 사용할 수 있습니다.

Vue 후크는 특정 이벤트 또는 수명 주기 단계에서 작업을 수행하는 콜백 함수입니다. 여기에는 수명 주기 후크(예: beforeCreate, 마운트, beforeDestroy), 이벤트 처리 후크(예: 클릭, 입력, 키다운) 및 사용자 정의 후크가 포함됩니다. 후크는 구성 요소 제어를 강화하고 구성 요소 수명 주기에 응답하며 사용자 상호 작용을 처리하고 구성 요소 재사용성을 향상시킵니다. 후크를 사용하려면 후크 함수를 정의하고 로직을 실행한 후 선택적 값을 반환하면 됩니다.

Vue.js 이벤트 수정자는 다음을 포함한 특정 동작을 추가하는 데 사용됩니다. 기본 동작 방지(.prevent) 이벤트 버블링 중지(.stop) 일회성 이벤트(.once) 이벤트 캡처(.capture) 수동 이벤트 수신(.passive) 적응형 수정자(.self)키 수정자(.key)
