Vue NativeVue Native
Guide
Components
Composables
Navigation
  • iOS
  • Android
  • macOS
GitHub
Guide
Components
Composables
Navigation
  • iOS
  • Android
  • macOS
GitHub
  • Layout

    • VView
    • VScrollView
    • VSafeArea
    • VKeyboardAvoiding
  • Text & Input

    • VText
    • VInput
  • Interactive

    • VButton
    • VPressable
    • VSwitch
    • VSlider
    • VSegmentedControl
    • VCheckbox
    • VRadio
    • VDropdown
    • VRefreshControl
  • Media

    • VImage
    • VWebView
    • VVideo
  • Lists

    • VList
    • VFlatList
    • VSectionList
  • Feedback

    • VActivityIndicator
    • VProgressBar
    • VAlertDialog
    • VActionSheet
    • VModal
    • VErrorBoundary
  • Transition & State

    • VTransition & VTransitionGroup
    • KeepAlive
    • VSuspense
  • Navigation

    • VNavigationBar
    • VTabBar
  • System

    • VStatusBar
    • VPicker
  • macOS

    • VToolbar
    • VSplitView
    • VOutlineView

VDropdown

A dropdown picker for selecting a single value from a list of options. Maps to UIMenu (iOS 14+) or UIPickerView on iOS and Spinner on Android.

Supports v-model for two-way binding of the selected value.

Usage

<VDropdown
  v-model="selectedCountry"
  :options="[
    { label: 'United States', value: 'us' },
    { label: 'Canada', value: 'ca' },
    { label: 'Mexico', value: 'mx' },
  ]"
  placeholder="Choose a country"
/>

Props

PropTypeDefaultDescription
modelValueString--The currently selected value. Bind with v-model
optionsDropdownOption[](required)Array of { label: string; value: string } objects
placeholderString'Select...'Placeholder text shown when no value is selected
disabledBooleanfalseDisables interaction when true
tintColorString--Accent color for the dropdown control
styleObject--Layout + appearance styles
accessibilityLabelString--Accessibility label read by screen readers

DropdownOption

interface DropdownOption {
  label: string
  value: string
}

Events

EventPayloadDescription
update:modelValuestringEmitted when the selection changes. Used internally by v-model
changestringEmitted when the user picks a different option

Example

<script setup>
import { ref, computed } from '@thelacanians/vue-native-runtime'

const language = ref('')
const theme = ref('system')

const languages = [
  { label: 'English', value: 'en' },
  { label: 'Spanish', value: 'es' },
  { label: 'French', value: 'fr' },
  { label: 'German', value: 'de' },
  { label: 'Japanese', value: 'ja' },
]

const themes = [
  { label: 'System Default', value: 'system' },
  { label: 'Light', value: 'light' },
  { label: 'Dark', value: 'dark' },
]

const summary = computed(() => {
  const lang = languages.find((l) => l.value === language.value)
  return lang ? lang.label : 'None'
})
</script>

<template>
  <VView :style="{ padding: 24, gap: 20 }">
    <VText :style="{ fontSize: 20, fontWeight: '700' }">Preferences</VText>

    <VView :style="{ gap: 6 }">
      <VText :style="{ fontSize: 14, color: '#666' }">Language</VText>
      <VDropdown
        v-model="language"
        :options="languages"
        placeholder="Choose a language"
        tintColor="#007AFF"
      />
    </VView>

    <VView :style="{ gap: 6 }">
      <VText :style="{ fontSize: 14, color: '#666' }">Theme</VText>
      <VDropdown
        v-model="theme"
        :options="themes"
        tintColor="#5856D6"
      />
    </VView>

    <VView
      :style="{
        backgroundColor: '#f0f0f0',
        padding: 12,
        borderRadius: 8,
        marginTop: 8,
      }"
    >
      <VText :style="{ color: '#666' }">
        Language: {{ summary }} | Theme: {{ theme }}
      </VText>
    </VView>
  </VView>
</template>
Edit this page
Last Updated: 2/28/26, 11:24 PM
Contributors: Abdul Hamid, Claude Opus 4.6
Prev
VRadio
Next
VRefreshControl