有条件的 Drawer.Navigator 的 openByDefault 属性无法正常工作(“@react-navigation/drawer”:“^5.12.5”)

Posted

技术标签:

【中文标题】有条件的 Drawer.Navigator 的 openByDefault 属性无法正常工作(“@react-navigation/drawer”:“^5.12.5”)【英文标题】:openByDefault attribute not working properly for Drawer.Navigator conditionally ("@react-navigation/drawer": "^5.12.5") 【发布时间】:2021-10-22 16:18:18 【问题描述】:

我正在使用 Drawer.Navigator 在 react native 中创建一个切换菜单,希望根据某些条件打开/关闭抽屉。它不能正常工作。

<Drawer.Navigator
  drawerContentOptions=
    activeTintColor: "#e91e63",
    itemStyle:  marginVertical: 5 ,
  
  drawerContent=(props) => <CustomDrawerContent ...props />
  initialRouteName="Home"
  openByDefault=storedCredentials.isDrawerOpen
>

当我控制storedCredentials.isDrawerOpen 时,它按预期给出true 或false,但它没有打开/关闭抽屉。 我们将不胜感激。

更新

    const DrawerRoutes = ( navigation ) => 
  const  storedCredentials, setStoredCredentials  =
    useContext(CredentialsContext);

  useLayoutEffect(() => 
    storedCredentials.data &&
    storedCredentials.data.flats &&
    storedCredentials.data.flats.length === 1
      ? setStoredCredentials(
          
            ...storedCredentials,
            flat: storedCredentials.data.flats[0],
            isDrawerOpen: false,
          
        )
      : setStoredCredentials(
          
            ...storedCredentials,
            isDrawerOpen: true,
          
        );
    console.log(storedCredentials);
  , []);

这是我设置上下文的地方,然后在 openByDefault 属性中使用它。

【问题讨论】:

【参考方案1】:

openByDefault 不能动态更改。

如果您想手动打开/关闭抽屉,请发送相关操作。

https://reactnavigation.org/docs/drawer-actions/

【讨论】:

谢谢,我已经想通了,但是这行得通,我需要使用 navigation.dispatch 操作而不是 openByDefult。【参考方案2】:

您可能在 storedCredentials.isDrawerOpen 之后缺少括号 () 像这样使用它storedCredentials.isDrawerOpen()

【讨论】:

storedCredentials.isDrawerOpen 是一个对象,而不是我从上下文中获取的方法/函数。我已经更新了我的问题。

以上是关于有条件的 Drawer.Navigator 的 openByDefault 属性无法正常工作(“@react-navigation/drawer”:“^5.12.5”)的主要内容,如果未能解决你的问题,请参考以下文章

UPDATE SQL语句,多条件更新问题?

Informatica 有条件的

是否可能有两个带有一个条件的“ THEN”语句?

excel 有条件去重统计个数?

Linq:如果参数为空,如何排除条件

sql查询条件为空的另类写法o( ̄▽ ̄)d