Vue를 사용하여 분할된 선택 구성 요소를 구현하는 방법은 무엇입니까?

WBOY
풀어 주다: 2023-06-25 11:53:42
원래의
986명이 탐색했습니다.

Vue는 오늘날 가장 인기 있는 프런트 엔드 개발 프레임워크 중 하나이며, 데이터 바인딩, 구성 요소화, 응답성 등과 같은 효율적이고 사용하기 쉬운 기능이 많이 있습니다. 세그먼트 선택은 사용자가 하나 이상의 세그먼트를 선택할 수 있는 일반적인 UI 구성 요소이며 일반적으로 쿼리 조건, 레이블 필터링 및 데이터 필터링과 같은 시나리오에 사용됩니다. 이 기사에서는 Vue를 사용하여 분할된 선택 구성 요소를 구현하는 방법을 소개합니다.

  1. 준비

시작하기 전에 다음 파일을 준비해야 합니다.

  1. index.html: Vue 소개와 컴포넌트의 행잉 코드가 포함되어 있습니다.
  2. Segment.vue: 세그먼트 선택을 위한 코드 Components

index.html 파일에 다음 코드를 추가하세요:

<!DOCTYPE html>
<html>
  <head>
    <title>Segment Selector Component</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@3.0.0/dist/vue.global.js"></script>
  </head>
  <body>
    <div id="app"></div>
    <script src="app.js"></script>
  </body>
</html>
로그인 후 복사

여기서는 Vue 3.0의 글로벌 빌드 버전을 사용하여 페이지에 소개합니다. 구성 요소 탑재를 위해 app.js라는 스크립트도 도입되었습니다.

다음으로 app.js 파일을 생성하고 다음 코드를 추가합니다:

import Segment from './Segment.vue';

const app = Vue.createApp({});
app.component('Segment', Segment);
app.mount('#app');
로그인 후 복사

여기에서는 Vue 3.0의 API를 사용하여 빈 애플리케이션 인스턴스를 생성하고 Segment라는 구성 요소를 등록한 다음 DOM 요소의 ID에 마운트합니다. 앱. 동시에 세그먼트 선택 구성 요소의 코드를 구현하려면 Segment.vue라는 파일도 만들어야 합니다.

  1. 세그먼트 선택 컴포넌트 구현

Segment.vue 파일에는 Segment라는 컴포넌트를 구현합니다. data, selectedIndex 및 multiSelect라는 세 가지 소품을 추가해야 합니다. data는 분할된 데이터 소스이고 selectedIndeX는 현재 선택된 분할된 인덱스이며 multiSelect는 다중 선택 모드를 활성화할지 여부를 나타냅니다. 동시에 분할된 클릭 이벤트를 처리하려면 구성 요소에 handlerSegmentClick 메서드를 정의해야 합니다.

<template>
  <div class="segment-container">
    <div
      v-for="(segment, index) in data"
      :key="index"
      :class="{
        'segment': true,
        'segment-active': multiSelect ?
          selectedIndex.includes(index) :
          selectedIndex === index
      }"
      @click="handleSegmentClick(index)"
    >
      {{ segment }}
    </div>
  </div>
</template>

<script>
export default {
  name: 'Segment',
  props: {
    data: {
      type: Array,
      default: () => []
    },
    selectedIndex: {
      type: [Number, Array],
      default: -1
    },
    multiSelect: {
      type: Boolean,
      default: false
    }
  },
  methods: {
    handleSegmentClick(index) {
      let selected = this.selectedIndex;

      if (this.multiSelect) {
        selected = (Array.isArray(selected)) ? selected : [];
        if (selected.includes(index)) {
          selected.splice(selected.indexOf(index), 1);
        } else {
          selected.push(index);
        }
      } else {
        selected = index === selected ? -1 : index;
      }

      this.$emit('update:selectedIndex', selected);
    }
  }
};
</script>
로그인 후 복사

템플릿 부분에서는 v-for를 사용하여 데이터 소스의 각 세그먼트를 순회하고 스타일 바인딩 명령을 통해 선택한 세그먼트에 활성 스타일을 추가합니다. 동시에 @click으로 이벤트를 바인딩하여 분할된 클릭 이벤트 처리를 구현합니다.

스크립트 섹션에서는 분할된 클릭 이벤트를 처리하기 위해 handlerSegmentClick이라는 메서드를 정의합니다. 이 방법에서는 먼저 현재 선택된 세그먼트를 얻고 다중 선택 모드의 상태에 따라 다른 처리를 수행합니다. 구체적으로 다중 선택 모드에서는 선택된 상태를 선택된 배열에 저장하고, 세그먼트가 선택되면 현재 세그먼트의 인덱스를 selected에 추가하고, 그렇지 않으면 선택된 세그먼트의 인덱스를 제거합니다. 라디오 선택 모드에서는 선택한 세그먼트 인덱스만 selected에 저장합니다. 클릭한 세그먼트가 이미 선택되어 있으면 선택한 상태가 지워집니다.

마지막으로 업데이트된 선택 상태를 this.$emit를 통해 상위 구성 요소에 다시 전달합니다. 그리고 handlerSegmentClick 메서드를 템플릿의 @click 이벤트에 바인딩합니다.

  1. 세그먼트 선택 컴포넌트 사용하기

index.html 파일에 배열 형태인 세그먼트데이터라는 변수를 생성하고, 이를 컴포넌트의 props로 Segment 컴포넌트에 전달합니다.

<div id="app">
  <Segment
    :data="segmentData"
    :selected-index.sync="selectedIndex"
    :multi-select="multiSelect"
  />
</div>
로그인 후 복사

보시다시피 data, selectedIndex 및 multiSelect라는 세 가지 소품을 구성했습니다. selectedIndex는 .sync 수정자를 사용하여 양방향 데이터 바인딩을 지원합니다.

다음으로 데이터 초기화 및 관련 처리를 위해 app.js에 다음 코드를 추가합니다.

import Segment from './Segment.vue';

const app = Vue.createApp({
  data() {
    return {
      segmentData: ['Web Development', 'Data Science', 'Mobile Development'],
      selectedIndex: 0,
      multiSelect: false
    };
  },
  methods: {
    toggleSelection() {
      this.multiSelect = !this.multiSelect;
      this.selectedIndex = this.multiSelect ? [0, 2] : 0;
    }
  }
});

app.component('Segment', Segment);

app.mount('#app');
로그인 후 복사

데이터 메서드에서는 세 가지 변수(segmentData, selectedIndex 및 multiSelect)를 초기화합니다. SegmentData는 선택해야 하는 세그먼트 데이터 소스이고, selectedIndex는 현재 선택된 세그먼트 인덱스를 기록하는 데 사용되며, multiSelect는 세그먼트 선택이 다중 선택 모드를 활성화하는지 여부를 나타냅니다.

메서드에서는 multiSelect의 값을 전환하고 해당 상태에 따라 selectedIndex의 값을 설정하는ggleSelection이라는 메서드를 정의합니다. 구체적으로 multiSelect가 true이면 selectedIndex를 [0, 2]로 설정하여 첫 번째와 세 번째 세그먼트가 선택되었음을 나타냅니다. 그렇지 않으면 selectedIndex를 0으로 설정하여 첫 번째 세그먼트가 선택되었음을 나타냅니다.

  1. Summary

이 글에서는 Vue를 사용하여 Segmented Selection 컴포넌트를 구현하는 방법을 소개했습니다. 쿼리 조건, 라벨 필터링, 데이터 필터링 등 다양한 시나리오에서 사용할 수 있는 일반 UI 구성요소입니다. 이 기사의 소개를 통해 독자는 Vue를 사용하여 데이터 바인딩, 구성 요소화, 응답성과 같은 중요한 기능을 구현하는 방법을 배우고 Vue에 대한 이해와 사용을 심화할 수 있습니다.

위 내용은 Vue를 사용하여 분할된 선택 구성 요소를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿