如何在 react-native 的 onPress 按钮上滚动底部?

Posted

技术标签:

【中文标题】如何在 react-native 的 onPress 按钮上滚动底部?【英文标题】:How can i scroll bottom on onPress of button in react-native? 【发布时间】:2018-07-29 13:00:12 【问题描述】:

我在简单屏幕上添加了按钮,并且我想在按下按钮时滚动底部。什么代码要添加到按钮 onPress?

render() 
 return (
  <ScrollView>
   this.yourComponents()
   <Button>Scroll To Bottom </Button>
  </ScrollView>
  )

【问题讨论】:

【参考方案1】:

您可以使用ref 来做到这一点。

render() 
 return (
  <ScrollView ref=scrollView => this.scrollView = scrollView>
   this.yourComponents()
   <Button onPress=() => this.scrollView.scrollToEnd()>Scroll To Bottom </Button>
  </ScrollView>
  )


您也可以使用useRef 挂钩来执行此操作。

const scrollView = useRef();
const scrollView = useRef();

const onPress = () => 
  scrollView.current.scrollToEnd();


<Button onPress=onPress /> 

【讨论】:

【参考方案2】:

这个问题和one 很相似,但又不完全一样,所以我会提供答案。

ScrollView 提供了一个ScrollTo() 方法,允许您滚动到滚动视图中的 x/y 位置。

let _scrollViewBottom

<ScrollView
    ref='_scrollView'
    onContentSizeChange=(contentWidth, contentHeight)=>
    _scrollViewBottom = contentHeight;
    >
</ScrollView>

然后像这样使用滚动视图的引用名称

this.refs._scrollView.scrollTo(_scrollViewBottom);

此外,如果您的目标是经常推送新数据并在滚动视图的末尾滚动,您可能想看看react-native-invertible-scroll-view。

InvertibleScrollView 是一个可以反转的 React Native 滚动视图,因此内容从底部开始呈现,用户必须向下滚动才能显示更多内容。这是聊天应用中常见的设计

【讨论】:

【参考方案3】:

对于功能组件

<ScrollView
  ref=ref =>  scrollView = ref 
  onContentSizeChange=() => scrollView.scrollToEnd( animated: true )
>
  ...
</ScrollView>

对于类组件

<ScrollView
  ref=ref =>  this.scrollView = ref 
  onContentSizeCange=() => this.scrollView.scrollToEnd( animated: true )
>
  ...
</ScrollView>

【讨论】:

【参考方案4】:
  let _scrollViewBottom
    
    <ScrollView
        ref=scrollViewRef
        onContentSizeChange=(contentWidth, contentHeight)=>
        _scrollViewBottom = contentHeight;
// this make move  your  scroll
        scrollViewRef.current.scrollTo(x:0,y:_scrollViewBottom ,animated:true);
        >
    </ScrollView>

此外,如果您的目标是频繁推送新数据并在滚动视图的末尾滚动,您可能想看看react-native-invertible-scroll-view。

InvertibleScrollView 是一个可以反转的 React Native 滚动视图,因此内容从底部开始呈现,用户必须向下滚动才能显示更多内容。这是聊天应用中常见的设计

【讨论】:

以上是关于如何在 react-native 的 onPress 按钮上滚动底部?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react-native 中定位移动应用的用户?

在react-native中,我如何在ios和android的图像上添加水印

在 React-native 中,如何更改 NavigatorIOS 的样式

如何在 react-native 中更改应用程序的显示名称

react-native:如何在反应上下文中更改子组件的参数?

React-native:如何从 Windows 构建 ios