首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导航到不同屏幕时,底部工作表不关闭

导航到不同屏幕时,底部工作表不关闭
EN

Stack Overflow用户
提问于 2022-01-10 06:53:28
回答 2查看 2.7K关注 0票数 0

我对编程很陌生,当我导航到新屏幕时,底部的工作表没有关闭这是它的照片。我正在使用@gorhom/bottom-sheet^4,.I已经做了一些研究,我知道使用useFocusEffect可以做到这一点,但是我不知道怎么做。有人能帮我吗?

代码语言:javascript
复制
<BottomSheetModal
    enablePanDownToClose={true}
    ref={bottomSheetModalRef}
    index={0}
    snapPoints={snapPoint}
    backdropComponent={renderBackdrop}
  >
    <View>
      <TouchableWithoutFeedback
        onPress={() => {
          navigation.navigate("Settings");
        }}
      >
        <Text style={styles.modalText}>Settings</Text>
      </TouchableWithoutFeedback>
      <TouchableWithoutFeedback
        onPress={() => {
          navigation.navigate("Saved");
        }}
      >
        <Text style={styles.modalText}>Saved</Text>
      </TouchableWithoutFeedback>
      <TouchableWithoutFeedback
        onPress={() => {
          navigation.navigate("Delete");
        }}
      >
        <Text style={styles.modalText}>Delete</Text>
      </TouchableWithoutFeedback>
      <TouchableWithoutFeedback onPress={() => {}}>
        <Text style={styles.modalText}>Log out</Text>
      </TouchableWithoutFeedback>
    </View>
  </BottomSheetModal>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-10 15:03:29

没有什么方法可以做到这一点。这里有两个:

  1. 添加当使用useFocusEffect的屏幕不聚焦时运行的BottomSheetModal
代码语言:javascript
复制
useFocusEffect(
  React.useCallback(() => {
    return () => bottomSheetRef.current?.close()
  }, [])
);
  1. 关闭BottomSheetModal,无论何时离开屏幕。为了做到这一点,您必须在导航时调用bottomSheetModalRef.current?.close: { navigation.navigate(" Settings ");bottomSheetModalRef.current?.close();}} >设置 {navigation.navigate(“已保存”);bottomSheetModalRef.current?.close();}} >已保存 { navigation.navigate(" Delete ");bottomSheetModalRef.current?.close();}} >删除
票数 3
EN

Stack Overflow用户

发布于 2022-11-22 16:03:02

如果您使用的是React导航,您还可以在导航更改时自动关闭任何打开的调制解调器,如下所示:

代码语言:javascript
复制
import { useBottomSheetModal } from '@gorhom/bottom-sheet'

const Navigation = () => {
    const { dismissAll: dismissAllModals } = useBottomSheetModal()

    return <NavigationContainer  
            onStateChange={() =>
                dismissAllModals()
            }>

           {...}

           </NavigationContainer>
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70648747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档