mirror of
https://github.com/zoriya/react-native-web.git
synced 2026-06-03 18:52:07 +00:00
Reorganize monorepo structure
* Move all config files to './configs' * Simplify './scripts' folder.
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
import React from 'react';
|
||||
import { Button, ScrollView, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
|
||||
import Example from '../../shared/example';
|
||||
|
||||
const ITEMS = [...Array(12)].map((_, i) => `Item ${i}`);
|
||||
|
||||
function createItemRow(msg, index) {
|
||||
return (
|
||||
<TouchableOpacity key={index} style={[styles.item]}>
|
||||
<Text style={styles.text}>{msg}</Text>
|
||||
</TouchableOpacity>
|
||||
);
|
||||
}
|
||||
|
||||
function Divider() {
|
||||
return <View style={styles.divider} />;
|
||||
}
|
||||
|
||||
export default function ScrollViewPage() {
|
||||
const [scrollEnabled, setEnabled] = React.useState(true);
|
||||
const [throttle, setThrottle] = React.useState(16);
|
||||
const scrollRef = React.useRef(null);
|
||||
|
||||
return (
|
||||
<Example title="ScrollView">
|
||||
<View style={styles.container}>
|
||||
<ScrollView
|
||||
onScroll={() => {
|
||||
console.log('onScroll');
|
||||
}}
|
||||
ref={scrollRef}
|
||||
scrollEnabled={scrollEnabled}
|
||||
scrollEventThrottle={throttle}
|
||||
style={[styles.scrollView, !scrollEnabled && styles.disabled]}
|
||||
>
|
||||
{ITEMS.map(createItemRow)}
|
||||
</ScrollView>
|
||||
|
||||
<View style={styles.buttons}>
|
||||
<Button
|
||||
onPress={() => {
|
||||
setEnabled((val) => !val);
|
||||
}}
|
||||
title={scrollEnabled ? 'Disable' : 'Enable'}
|
||||
/>
|
||||
<Divider />
|
||||
<Button
|
||||
onPress={() => {
|
||||
setThrottle((val) => (val !== 16 ? 16 : 1000));
|
||||
}}
|
||||
title="Throttle"
|
||||
/>
|
||||
</View>
|
||||
<View style={styles.buttons}>
|
||||
<Button
|
||||
onPress={() => {
|
||||
scrollRef.current.scrollTo({ y: 0 });
|
||||
}}
|
||||
title="To start"
|
||||
/>
|
||||
<Divider />
|
||||
<Button
|
||||
onPress={() => {
|
||||
scrollRef.current.scrollTo({ y: 50 });
|
||||
}}
|
||||
title="To 50px"
|
||||
/>
|
||||
<Divider />
|
||||
<Button
|
||||
onPress={() => {
|
||||
scrollRef.current.scrollToEnd({ animated: true });
|
||||
}}
|
||||
title="To end"
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</Example>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
alignSelf: 'stretch'
|
||||
},
|
||||
scrollView: {
|
||||
backgroundColor: '#eeeeee',
|
||||
maxHeight: 250
|
||||
},
|
||||
disabled: {
|
||||
opacity: 0.5
|
||||
},
|
||||
item: {
|
||||
margin: 5,
|
||||
padding: 5,
|
||||
backgroundColor: '#cccccc',
|
||||
borderRadius: 3,
|
||||
minWidth: 96
|
||||
},
|
||||
text: {
|
||||
fontSize: 16,
|
||||
fontWeight: 'bold',
|
||||
margin: 5
|
||||
},
|
||||
buttons: {
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'center',
|
||||
marginVertical: '1rem'
|
||||
},
|
||||
divider: {
|
||||
width: '1rem'
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user