Scroll a page whose children can all stay mounted. Use it for an article, form or a small set of sections.

Read a page of paragraphs

tsx
import { Scroll, Text } from 'kuito';

const paragraphs = ['The tide came in.', 'It went out again.', 'Nobody noticed.'];

export default function Article() {
  return (
    <Scroll flex={1} padding={16} gap={12}>
      {paragraphs.map((paragraph) => (
        <Text key={paragraph}>{paragraph}</Text>
      ))}
    </Scroll>
  );
}

Behavior

Give the scroll view a bounded height, often with flex={1}. All children are rendered. Use List for large collections. Vertical scroll views can keep focused fields clear of the keyboard.

Props

Prop Meaning
horizontal Scroll sideways. Changing it remounts the view.
onScroll, scrollInterval { x, y, contentWidth, contentHeight, layoutWidth, layoutHeight } in points, at most once per throttle (50 ms by default).
onScrollEnd HTML's scrollend: the same fields, where it came to rest after a fling, a drag or a scrollTo, once per rest.
onReachEnd, reachEndThreshold Once each time the end comes within the threshold, in visible lengths (0.5 by default).
onRefresh, refreshing Pull-to-refresh (vertical only).
scrollbar Shows or hides the scrollbar.
motion scrollMotion(): its offset, velocity and overscroll move with the view every frame, on the UI thread (follow scrolling).
paging, snapOffsets Where a drag comes to rest: whole pages, or the offsets given.
keyboard { dismiss, persistTaps, inset, avoid }: when dragging dismisses the keyboard, what a tap outside the field does, whether content stays clear of it (true by default) (keyboard).

Continue

Read Keyboard for a complete workflow. See the complete prop reference for types and documented defaults.

Referenz

Signaturen

ts
(props: ScrollProps): KuitoElement

Parameter

NameTypErforderlichBeschreibung
propsScrollPropsJa—

Rückgabe

KuitoElement

Props: ScrollProps

Props (einschließlich geerbter Props) 108

NameTypErforderlichBeschreibung
horizontalProp<boolean>NeinScrolls sideways; changing it remounts the view, as the native axis is fixed.
refElementRef<ScrollHandle>Nein—
motionScrollMotionNeinMoves with the view every frame on the UI thread: scrollMotion(), given to one view.
onScroll(event: ScrollEvent) => voidNein—
onScrollEnd(event: ScrollEndEvent) => voidNeinWhere it came to rest: after a fling, a drag or a scrollTo, once per rest.
onReachEnd(event: KuitoEvent<"reachend">) => voidNeinCalled once each time the content end comes within the threshold.
onRefresh(event: KuitoEvent<"refresh">) => voidNeinEnables pull-to-refresh.
opacityAnimatable<number>Nein—
backgroundColorAnimatable<string>Nein—
borderRadiusAnimatable<number>Nein—
borderColorAnimatable<string>Nein—
widthAnimatable<SizeValue>Nein—
heightAnimatable<SizeValue>Nein—
translateXAnimatable<number>Nein—
translateYAnimatable<number>Nein—
scaleAnimatable<number>Nein—
scaleXAnimatable<number>Nein—
scaleYAnimatable<number>Nein—
rotateAnimatable<number>NeinDegrees.
shadowColorAnimatable<string>Nein—
shadowRadiusAnimatable<number>Nein—
shadowOffsetXAnimatable<number>Nein—
shadowOffsetYAnimatable<number>Nein—
hiddenProp<boolean>NeinTakes the view out of layout and off screen, as CSS display: none.
paddingProp<LengthPercentage>Nein—
positionProp<"relative" | "absolute">Nein—
childrenKuitoNodeNein—
idstringNein—
classProp<ClassNames>NeinClass names from a .css import or styles(): a string, or a list with falsy entries skipped, following the signals it reads.
styleStyleDeclarationsNeinStyles of this view alone, compiled at build time: CSS properties in camelCase. A value that changes must set a native prop (opacity).
onPress(event: PressEvent) => voidNein—
onPressCapture(event: PressEvent) => voidNein—
keystring | numberNein—
paddingTopProp<LengthPercentage>Nein—
paddingRightProp<LengthPercentage>Nein—
paddingBottomProp<LengthPercentage>Nein—
paddingLeftProp<LengthPercentage>Nein—
minWidthProp<SizeValue>Nein—
maxWidthProp<SizeValue>Nein—
minHeightProp<SizeValue>Nein—
maxHeightProp<SizeValue>Nein—
aspectRatioProp<number>NeinWidth divided by height; sizes the missing side from the other.
topProp<LengthPercentageAuto>Nein—
rightProp<LengthPercentageAuto>Nein—
bottomProp<LengthPercentageAuto>Nein—
leftProp<LengthPercentageAuto>Nein—
marginProp<LengthPercentageAuto>Nein—
marginTopProp<LengthPercentageAuto>Nein—
marginRightProp<LengthPercentageAuto>Nein—
marginBottomProp<LengthPercentageAuto>Nein—
marginLeftProp<LengthPercentageAuto>Nein—
flexGrowProp<number>Nein—
flexShrinkProp<number>Nein—
flexBasisProp<SizeValue | "content">Nein—
flexProp<number>NeinA grow factor from a zero basis, as CSS flex: n; 0 is inflexible.
alignSelfProp<"auto" | SelfAlignment>Nein—
directionProp<"ltr" | "rtl">NeinThe way lines run; unset, the parent's, and the app's first language's at the root.
boxSizingProp<"border-box" | "content-box">Nein—
paddingInlineStartProp<LengthPercentage>NeinPadding on the side lines start from: the left in ltr, the right in rtl.
paddingInlineEndProp<LengthPercentage>NeinPadding on the side lines end at: the right in ltr, the left in rtl.
marginInlineStartProp<LengthPercentageAuto>NeinMargin on the side lines start from: the left in ltr, the right in rtl.
marginInlineEndProp<LengthPercentageAuto>NeinMargin on the side lines end at: the right in ltr, the left in rtl.
insetInlineStartProp<LengthPercentageAuto>Neinleft in ltr, right in rtl.
insetInlineEndProp<LengthPercentageAuto>Neinright in ltr, left in rtl.
roleProp<Role>Nein—
onAction(event: AccessibilityActionEvent) => voidNeinThe screen reader action taken, by name.
accessibleProp<boolean>NeinMakes the view one screen reader element, read as its label or its children's text.
labelProp<string>NeinWhat a screen reader says for the view.
hintProp<string>NeinWhat happens when the view is activated, read after the label.
aria-hiddenProp<boolean>NeinScreen readers skip the view and its subtree.
actionsProp<readonly AccessibilityAction[]>NeinActions a screen reader offers; onAction receives the one taken.
liveProp<"off" | "polite" | "assertive">NeinARIA's aria-live: announces changes to the view's content, on iOS too.
aria-disabledProp<boolean>Nein—
aria-selectedProp<boolean>Nein—
aria-checkedProp<boolean | "mixed">Nein—
aria-busyProp<boolean>Nein—
aria-expandedProp<boolean>Nein—
aria-valueminProp<number>Nein—
aria-valuemaxProp<number>Nein—
aria-valuenowProp<number>Nein—
aria-valuetextProp<string>Nein—
gesturesreadonly Composable[]NeinThe view's gestures; several race unless composed with together or orElse.
transitionPartial<Record<"opacity" | "backgroundColor" | "transform" | "borderRadius" | "borderColor" | "shadow" | "width" | "height" | "all", Animation<unknown> | AnimationSpec>>NeinHow the animatable props move when they change, enter or leave, by group; a CSS transition compiles to it.
animatePartial<Record<AnimatableProps, string | number>>NeinAnimatable props whose every change moves as transition says; the first value applies at once.
enterEffectNeinWhere the view enters from: fade.and(slide.up(12)).
exitProp<Effect>NeinWhere the view leaves to; it stays on screen until it is there. The renderer gets true, and keeps the view until exited.
layoutAnimation<number>NeinHow the view moves to a new frame the layout gives it: layout={spring()}.
overflowProp<"visible" | "hidden" | "clip" | "scroll">Neinhidden and scroll clip; as in CSS, either lets a flex item shrink below its content.
borderWidthProp<number>Nein—
backgroundGradient{ angle: number; colors: string[];}Nein—
colorProp<string>Nein—
sharedIdProp<string>NeinA view the navigation stack flies to the view with the same sharedId on the screen it pushes or pops to (docs/navigation.md#shared-elements).
alignItemsProp<SelfAlignment>Nein—
justifyContentProp<ContentAlignment>Nein—
gapProp<LengthPercentage>Nein—
rowGapProp<LengthPercentage>Nein—
columnGapProp<LengthPercentage>Nein—
flexDirectionProp<"row" | "column" | "row-reverse" | "column-reverse">Nein—
flexWrapProp<"nowrap" | "wrap" | "wrap-reverse" | "balance">Nein—
flexLineCountProp<number>NeinThe minimum number of lines a wrapping container breaks into (CSS Flexbox 2).
alignContentProp<ContentAlignment>Nein—
scrollIntervalProp<number>NeinAt most one scroll event per this many milliseconds; 50 by default.
reachEndThresholdProp<number>NeinDistance from the end, in visible lengths, that counts as the end; 0.5 by default.
refreshingBound<boolean>NeinShows the pull-to-refresh spinner while true.
scrollbarProp<boolean>NeinShows the scrollbar while scrolling; true by default.
pagingProp<boolean>NeinComes to rest a whole view length at a time; false by default.
snapOffsetsProp<readonly number[]>NeinOffsets in points where a drag comes to rest, besides the start and the end; ignored while paging.
keyboardProp<{ dismiss?: "none" | "on-drag" | "interactive"; persistTaps?: "never" | "always" | "handled"; inset?: boolean; avoid?: "none" | "padding" | "position";}>Nein—
onScroll — Methodensignaturen

Signaturen

ts
(event: ScrollEvent): void

Parameter

NameTypErforderlichBeschreibung
eventScrollEventJa—

Rückgabe

void

onScrollEnd — Methodensignaturen

Signaturen

ts
(event: ScrollEndEvent): void

Parameter

NameTypErforderlichBeschreibung
eventScrollEndEventJa—

Rückgabe

void

onReachEnd — Methodensignaturen

Signaturen

ts
(event: KuitoEvent<"reachend">): void

Parameter

NameTypErforderlichBeschreibung
eventKuitoEvent<"reachend">Ja—

Rückgabe

void

onRefresh — Methodensignaturen

Signaturen

ts
(event: KuitoEvent<"refresh">): void

Parameter

NameTypErforderlichBeschreibung
eventKuitoEvent<"refresh">Ja—

Rückgabe

void

onPress — Methodensignaturen

Signaturen

ts
(event: PressEvent): void

Parameter

NameTypErforderlichBeschreibung
eventPressEventJa—

Rückgabe

void

onPressCapture — Methodensignaturen

Signaturen

ts
(event: PressEvent): void

Parameter

NameTypErforderlichBeschreibung
eventPressEventJa—

Rückgabe

void

onAction — Methodensignaturen

Signaturen

ts
(event: AccessibilityActionEvent): void

Parameter

NameTypErforderlichBeschreibung
eventAccessibilityActionEventJa—

Rückgabe

void

backgroundGradient — verschachtelte Felder

backgroundGradient Felder

NameTypErforderlichBeschreibung
anglenumberJa—
colorsstring[]Ja—
Generiert aus den öffentlichen TypeScript-Deklarationen: Signaturen, Props und Standardwerte stammen aus der geprüften Quelle, Beschreibungen aus deren JSDoc. Kein Standardwert ist erfunden.