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

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

    • VText
    • VInput
  • Interactive

    • VButton
    • VSwitch
    • VSlider
    • VSegmentedControl
  • Media

    • VImage
    • VWebView
  • Lists

    • VList
  • Feedback

    • VActivityIndicator
    • VProgressBar
    • VAlertDialog
    • VActionSheet
    • VModal
  • System

    • VStatusBar
    • VPicker

VButton

A pressable container view. Maps to a UIControl-based view on iOS and a custom touch delegate on Android.

Unlike web buttons, VButton is a layout container — place VText or other views inside it.

Usage

<VButton
  :style="{ backgroundColor: '#007AFF', padding: 12, borderRadius: 8 }"
  @press="handlePress"
>
  <VText :style="{ color: '#fff', fontWeight: '600' }">Tap me</VText>
</VButton>

Props

PropTypeDefaultDescription
styleStyleProp—Layout + appearance styles
disabledbooleanfalseDisable press interactions

Events

EventPayloadDescription
@press{ x, y }Tap / click
@longPress{ x, y }Long press (500 ms)

Example

<script setup>
const submit = () => console.log('Submitted!')
</script>

<template>
  <VButton :style="styles.button" @press="submit">
    <VText :style="styles.label">Submit</VText>
  </VButton>
</template>

<script>
import { createStyleSheet } from '@thelacanians/vue-native-runtime'

const styles = createStyleSheet({
  button: {
    backgroundColor: '#007AFF',
    paddingHorizontal: 24,
    paddingVertical: 12,
    borderRadius: 8,
    alignItems: 'center',
  },
  label: {
    color: '#fff',
    fontSize: 16,
    fontWeight: '600',
  },
})
</script>
Edit this page
Last Updated: 2/23/26, 5:58 AM
Contributors: Abdul Hamid, Claude Sonnet 4.6, Claude Opus 4.6
Next
VSwitch