React Native ScrollView 滚动到结束

React Native ScrollView scroll to end

有没有办法在更改时自动向下滚动 react-native 的 ScrollView 元素?

这是我在开发我的应用程序中的聊天功能时一直在​​寻找 react-native 的东西。

虽然没有足够的答案。这就是为什么我要回答我自己的问题,希望有人可以利用它。

首先要知道的是react-native的ScrollView的scrollTo()方法。 scrollTo()方法将scrollview滚动到某个位置。

我们要利用的第二件事是 ScrollView 的 onContentSizeChanged() 事件。

除此之外,我们还必须在我们的事件中调用我们的滚动视图。因此,我们使用“useRef”挂钩来创建对滚动视图的引用。

要使用“useRef”挂钩,我们必须先导入它:

import {useRef} from "react";

创建一个常量作为对滚动视图组件的引用:

const scrollViewRef = useRef(null);

创建一个函数来处理 scrollView 的 onContentSizeChanged() 事件:

function scrollViewSizeChanged(height){
   // y since we want to scroll vertically, use x and the width-value if you want to scroll horizontally
   scrollViewRef.current?.scrollTo({y: height, animated: true}); 
}

定义滚动视图并将 ref 和 onContentSizeChange 事件设置为先前创建的函数。

<ScrollView ref={scrollViewRef} onContentSizeChange={(width,height) => {scrollViewSizeChanged(height)}}>
  {/* HERE GOES YOUR CONTENT*/
</ScrollView>

使用 react-native 版本测试:6.4.0

编辑: 找到一个已经滚动到结束的方法。

您也可以像这样定义 onContentSizeChanged-event:

<ScrollView ref={scrollViewRef} onContentSizeChange={() => {scrollViewRef.current?.scrollToEnd()}}>
    {/* HERE GOES YOUR CONTENT*/
</ScrollView>

为了更好地了解,我只是在定义事件的行中进行了调用,并去掉了附加函数。