From 73139fa7bc03df22711b292c4a7867d2400c71f0 Mon Sep 17 00:00:00 2001 From: Janic Duplessis Date: Wed, 4 Oct 2023 16:00:15 -0400 Subject: [PATCH] Implement maintainVisibleContentPosition --- .../pages/scroll-view/index.js | 85 ++++++-- .../src/exports/ScrollView/ScrollViewBase.js | 187 +++++++++++++++++- .../src/exports/ScrollView/index.js | 1 + 3 files changed, 255 insertions(+), 18 deletions(-) diff --git a/packages/react-native-web-examples/pages/scroll-view/index.js b/packages/react-native-web-examples/pages/scroll-view/index.js index aff8007924..8a55ed4273 100644 --- a/packages/react-native-web-examples/pages/scroll-view/index.js +++ b/packages/react-native-web-examples/pages/scroll-view/index.js @@ -3,29 +3,39 @@ import { ScrollView, StyleSheet, Text, Pressable, View } from 'react-native'; import Button from '../../shared/button'; import Example from '../../shared/example'; -const ITEMS = [...Array(12)].map((_, i) => `Item ${i}`); +const ITEMS = [...Array(12)].map((_, i) => ({ id: i, text: `Item ${i}` })); -function createItemRow(msg, index) { +function createItemRow(msg) { return ( - - {msg} + + {msg.text} ); } -function Divider() { - return ; -} - export default function ScrollViewPage() { const [scrollEnabled, setEnabled] = React.useState(true); + const [horizontal, setHorizontal] = React.useState(false); const [throttle, setThrottle] = React.useState(16); + const [maintainVisibleContentPosition, setMaintainVisibleContentPosition] = + React.useState(false); + const [autoscrollToTop, setAutoScrollToTop] = React.useState(false); + const [items, setItems] = React.useState(ITEMS); const scrollRef = React.useRef(null); return ( { console.log('onScroll'); }} @@ -34,45 +44,87 @@ export default function ScrollViewPage() { scrollEventThrottle={throttle} style={[styles.scrollView, !scrollEnabled && styles.disabled]} > - {ITEMS.map(createItemRow)} + {items.map(createItemRow)} +