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

VView

A container view. The basic building block of every Vue Native layout.

Equivalent to <div> in web, UIView on iOS, FlexboxLayout on Android.

Usage

<VView :style="{ flex: 1, padding: 16, backgroundColor: '#fff' }">
  <VText>Hello</VText>
</VView>

Props

PropTypeDefaultDescription
styleStyleProp--Flexbox layout + appearance styles
testIDstring--Test identifier for end-to-end testing
accessibilityLabelstring--Accessible description
accessibilityRolestring--Accessibility role (e.g. 'button', 'header')
accessibilityHintstring--Additional accessibility context
accessibilityStateobject--Accessibility state (e.g. { disabled: true })

Events

VView does not emit any events. For pressable containers, use VButton or VPressable.

Flexbox

VView supports all Flexbox layout properties. See Styling for the full list.

<VView :style="{
  flex: 1,
  flexDirection: 'row',
  alignItems: 'center',
  justifyContent: 'space-between',
  padding: 16,
  gap: 8,
}">
  <VText>Left</VText>
  <VText>Right</VText>
</VView>

Example

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

const styles = createStyleSheet({
  container: {
    flex: 1,
    padding: 20,
    backgroundColor: '#f5f5f5',
  },
  card: {
    backgroundColor: '#fff',
    padding: 16,
    borderRadius: 12,
    marginBottom: 12,
  },
})
</script>

<template>
  <VView :style="styles.container">
    <VView :style="styles.card">
      <VText :style="{ fontSize: 18, fontWeight: '600' }">Card Title</VText>
      <VText :style="{ color: '#666', marginTop: 4 }">Card description goes here.</VText>
    </VView>
    <VView :style="styles.card">
      <VText :style="{ fontSize: 18, fontWeight: '600' }">Another Card</VText>
      <VText :style="{ color: '#666', marginTop: 4 }">More content.</VText>
    </VView>
  </VView>
</template>
Edit this page
Last Updated: 2/28/26, 11:24 PM
Contributors: Abdul Hamid, Claude Opus 4.6
Next
VScrollView