Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 阻止Flatlist在内容大小更改时滚动到顶部_Reactjs_React Native_React Native Flatlist_React Native Scrollview_React Native Paper - Fatal编程技术网

Reactjs 阻止Flatlist在内容大小更改时滚动到顶部

Reactjs 阻止Flatlist在内容大小更改时滚动到顶部,reactjs,react-native,react-native-flatlist,react-native-scrollview,react-native-paper,Reactjs,React Native,React Native Flatlist,React Native Scrollview,React Native Paper,在平面列表中我有手风琴(按)。当我滚动到任何位置并打开/关闭手风琴时,FlatList滚动到屏幕顶部。我应该如何预防它 换言之,当手风琴展开时,内容大小会发生变化。如何保持用户在内容大小更改时的位置。当前代码段不工作,存储的y位置将重置 const flatListRef = React.useRef<FlatList<any>>(null); const yOffset = React.useRef<number>(0); &

平面列表中
我有手风琴(按)。当我滚动到任何位置并打开/关闭手风琴时,
FlatList
滚动到屏幕顶部。我应该如何预防它

换言之,当手风琴展开时,内容大小会发生变化。如何保持用户在内容大小更改时的位置。当前代码段不工作,存储的y位置将重置

  const flatListRef = React.useRef<FlatList<any>>(null);
  const yOffset = React.useRef<number>(0);

           <FlatList
             ref={flatListRef}
             data={properties}
             renderItem={renderItem}
             keyExtractor={(item) => `${item.id}`}
             onContentSizeChange={() =>{flatListRef.current!.scrollToOffset({offset: yOffset.current, animated: false});}}
             onEndReached={onEndReached}
             onEndReachedThreshold={0}
             scrollEventThrottle={15}
             onScroll={(e) => {yOffset.current = e.nativeEvent.contentOffset.y;}}
             ListFooterComponent={<ActivityIndicator animating={loading} size="small" />}
  />
const flatListRef=React.useRef(null);
const yOffset=React.useRef(0);
`${item.id}`}
onContentSizeChange={()=>{flatListRef.current!.scrollToOffset({offset:yOffset.current,动画:false});}
onEndReached={onEndReached}
onEndReachedThreshold={0}
scrollEventThrottle={15}
onScroll={(e)=>{yOffset.current=e.nativeEvent.contentOffset.y;}}
ListFooterComponent={}
/>

例如,(在contentSizeChange
conosle.log(yOffset.current)
中)如果我滚动到yOffset
850
并在那里检查手风琴,我会在控制台中看到两个日志,
850
,然后
126
(126返回顶部),这表明,onScroll被调用,yOffset被更改。

不确定您的问题,但如果您不想在accordion展开中滚动到顶部,只需删除
onContentSizeChange
onScroll
道具


此外,如果您想在屏幕顶部的手风琴上使用该按钮,只需将
手风琴
包装在
视图
中,并使用
onLayout
道具获得
视图
的展开高度/xy坐标,然后您就可以使用平面列表的
scrollToOffset()
要滚动到特定的
手风琴

能否将其放入代码沙盒中?能否在expo零食中提供最小的工作代码?也许,这样我们就可以解决问题了。您可以使用
zIndex
将一个视图置于另一个视图之上。尝试将您的
FlatList
放在视图中,或者给它一个类并使用
zIndex
。它的工作原理与CSS z-index属性类似-具有较大的
zIndex
的组件将呈现在顶部,并且不会影响或更改其他元素的位置。