Fab*_*ano 7 tabs scroll reactjs react-native react-navigation
我有一个基于选项卡的应用程序。如果我当前在第一个选项卡上,一直向下滚动,然后再次单击该选项卡,我希望它滚动到顶部。这可能吗?
我知道我应该有一个带有引用的滚动视图,然后使用this._scrollView.scrollTo(0),但是如何检测用户何时点击标签栏并确定它是否是同一个标签?
对于正在寻找 react native 解决方案的人来说,如果您使用的是 react 导航,则需要从 react-navigation 导入 ScrollView、FlatList 或 SectionList,而不是 react-native。
例如。
import { FlatList } from 'react-navigation';
Run Code Online (Sandbox Code Playgroud)
您可以在文档中找到详细信息:https : //reactnavigation.org/docs/4.x/scrollables/
更新
如果您使用的是反应导航 v5
import * as React from 'react';
import { FlatList } from 'react-native';
import { useScrollToTop } from '@react-navigation/native';
function CustomComponent() {
const ref = React.useRef(null);
useScrollToTop(ref);
return <FlatList ref={ref} {/* settings */} />;
}
Run Code Online (Sandbox Code Playgroud)
文档:https : //reactnavigation.org/docs/use-scroll-to-top
您可以按如下方式创建标签导航器:
const TabNav = TabNavigator({
// config
},
{
navigationOptions: ({ navigation }) => ({
tabBarOnPress: (scene, jumpToIndex) => {
// Called when tab is press
},
}),
});
Run Code Online (Sandbox Code Playgroud)
为了滚动到顶部,您可以查看此解决方案:
反应导航 5.x
他们提供的最简单的解决方案是,只需将可滚动组件的 ref 传递给他们的useScrollToTop钩子。
import * as React from 'react';
import { ScrollView } from 'react-native';
import { useScrollToTop } from '@react-navigation/native';
function Albums() {
const ref = React.useRef(null);
useScrollToTop(ref);
return <ScrollView ref={ref}>{/* content */}</ScrollView>;
}
Run Code Online (Sandbox Code Playgroud)
对于 React navigation 5,只需使用useScrollToTop中的钩子即可@react-navigation/native。他们的文档概述了如何使用它: https: //reactnavigation.org/docs/use-scroll-to-top。
来自他们的文档:
功能组件
import * as React from 'react';
import { ScrollView } from 'react-native';
import { useScrollToTop } from '@react-navigation/native';
function Albums() {
const ref = React.useRef(null);
useScrollToTop(ref);
return <ScrollView ref={ref}>{/* content */}</ScrollView>;
}
Run Code Online (Sandbox Code Playgroud)
类组件
class Albums extends React.Component {
render() {
return <ScrollView ref={this.props.scrollRef}>{/* content */}</ScrollView>;
}
}
// Wrap and export
export default function(props) {
const ref = React.useRef(null);
useScrollToTop(ref);
return <Albums {...props} scrollRef={ref} />;
}
Run Code Online (Sandbox Code Playgroud)
旁注:您可以在任何滚动并有权访问该navigation道具的组件上使用它。例如,您可以在给定屏幕下拥有多个可滚动组件(如果您使用类似的东西react-native-tab-view),这对于它们两个单独来说都可以很好地工作。
| 归档时间: |
|
| 查看次数: |
9667 次 |
| 最近记录: |