React Native - 在 FlatList 之外触发 FlatList 的滚动
React Native - trigger scrolling of FlatList outside the FlatList
我有一个垂直 FlatList
组件和两个按钮 TouchableOpacity
,如何使用按钮
执行 FlatList
的滚动
即“将 FlatList 滚动到底部”和 'scroll the FlatList towards top'?
最小示例:
<View>
<FlatList/>
<TouchableOpacity>
<Text>Scroll towards Top</>Text
</TouchableOpacity>
<TouchableOpacity>
<Text>Scroll towards Bottom</>Text
</TouchableOpacity>
</View>
您可以使用 scrollView 组件
这并不难实现,<Flatlist/>
组件已经有方法可以做到这一点。
scrollToEnd()
:滚动到内容的末尾。
scrollToIndex()
:滚动到指定索引处的项目,例如 0
是顶部。
我为您创建了一个简单的演示:https://snack.expo.io/@abranhe/flatlist-scroll
我创建了自定义 <Button/>
和 <Card/>
组件。我正在用这种格式
创建一个包含一些随机数据的数组
const data = [
{ message: 'Random Message' }, { message: 'Random Message' }
]
我通过添加
添加对 <Flatlist/>
的引用
ref={ref => (this.flatlist = ref)}
然后调用方法,就这样。
<Button title="▼" onPress={() => this.flatlist.scrollToEnd()} />
整个源代码:
import React from 'react';
import { Text, View, FlatList, StyleSheet } from 'react-native';
import { random } from 'merry-christmas';
import Card from './components/Card';
import Button from './components/Button';
const data = [...Array(10)].map(i => ({ message: random() }));
export default () => (
<View style={styles.container}>
<FlatList
ref={ref => (this.flatlist = ref)}
data={data}
renderItem={({ item }) => <Card gretting={item.message} />}
/>
<View style={styles.bottomContainer}>
<Button
title="▲"
onPress={() => this.flatlist.scrollToIndex({ index: 0 })}
/>
<Button title="▼" onPress={() => this.flatlist.scrollToEnd()} />
</View>
</View>
);
我有一个垂直 FlatList
组件和两个按钮 TouchableOpacity
,如何使用按钮
FlatList
的滚动
即“将 FlatList 滚动到底部”和 'scroll the FlatList towards top'?
最小示例:
<View>
<FlatList/>
<TouchableOpacity>
<Text>Scroll towards Top</>Text
</TouchableOpacity>
<TouchableOpacity>
<Text>Scroll towards Bottom</>Text
</TouchableOpacity>
</View>
您可以使用 scrollView 组件
这并不难实现,<Flatlist/>
组件已经有方法可以做到这一点。
scrollToEnd()
:滚动到内容的末尾。scrollToIndex()
:滚动到指定索引处的项目,例如0
是顶部。
我为您创建了一个简单的演示:https://snack.expo.io/@abranhe/flatlist-scroll
我创建了自定义 <Button/>
和 <Card/>
组件。我正在用这种格式
const data = [
{ message: 'Random Message' }, { message: 'Random Message' }
]
我通过添加
添加对<Flatlist/>
的引用
ref={ref => (this.flatlist = ref)}
然后调用方法,就这样。
<Button title="▼" onPress={() => this.flatlist.scrollToEnd()} />
整个源代码:
import React from 'react';
import { Text, View, FlatList, StyleSheet } from 'react-native';
import { random } from 'merry-christmas';
import Card from './components/Card';
import Button from './components/Button';
const data = [...Array(10)].map(i => ({ message: random() }));
export default () => (
<View style={styles.container}>
<FlatList
ref={ref => (this.flatlist = ref)}
data={data}
renderItem={({ item }) => <Card gretting={item.message} />}
/>
<View style={styles.bottomContainer}>
<Button
title="▲"
onPress={() => this.flatlist.scrollToIndex({ index: 0 })}
/>
<Button title="▼" onPress={() => this.flatlist.scrollToEnd()} />
</View>
</View>
);