1

我正在使用 WIX V2 导航,我想创建一个 leftButton 来切换 sideMenu 并使其在按下时可见,我正在实现我的导航堆栈,如下所示:

Navigation.setRoot({
    root: {
        sideMenu: {
            left: {
                component: {
                    name: 'app.Drawer',
                    enabled: false,
                    visible: false,
                },
            },
            center: {
                stack: {
                    children: [{
                        component: {
                            name: 'app.Screen',
                        },
                    }, ],
                },
            },
        },
    },
});

在具有切换菜单的屏幕中,我创建了如下选项和事件:

    import { Navigation } from "react-native-navigation";

    export default class Screen extends Component {
      constructor(props) {
        super(props);
        Navigation.events().bindComponent(this);
      }
      static get options(passProps) {
        return {
          topBar: {
            title: {
              text: 'Screen',
            },
            leftButtons: [
              {
                icon: require('../../../assets/icons/burgerIcon.png'),
                id: 'toggleMenu',
              },
            ],
          },
        };
      }

  navigationButtonPressed({ buttonId }) {
    Navigation.mergeOptions('app.Drawer', {
      sideMenu: {
        left: {
          visible: true, 
        },
      },
    });
  }

我尝试遵循此处的文档,但事件侦听器导航按钮按下事件文档未捕获该事件

4

2 回答 2

0

你可以试试下面的代码。希望能帮助到你。

您的主屏幕或应用程序屏幕:

import React, { Component } from 'react'
import { Navigation } from "react-native-navigation";

export default class HomeScreen extends Component {
  static get options() {
    return {
      topBar: {
        title: {
          text: 'Screen',
        },
        // Configure your button style here
        leftButtons: [
          {
            id: "sideMenu",
            icon: require('../../../assets/icons/burgerIcon.png'),
          }
        ]
      }
    };
  }

  constructor(props) {
    super(props);
    Navigation.events().bindComponent(this);
  }

  navigationButtonPressed({ buttonId }) {
    try {
      Navigation.mergeOptions("app.Drawer", {
        sideMenu: {
          left: {
            visible: true,
          },
        },
      });  
    } catch (error) {
      //
    }
  }

  render() {
    return (
      <View >
        <Text>Hello from Home screen.</Text>
      </View>
    )
  }
}

对于导航:

Navigation.setRoot({
  root: {
    sideMenu: {
      id: "sideMenu",
      left: {
        component: {
          id: "app.Drawer",
          name: "app.Drawer",
        }
      },
      center: {
        stack: {
          id: "App",
          children: [{
            component: {
              id: "app.Screen",
              name: "app.Screen"
             }
          }]
        }
      }
    }
  }   
});

包版本:“react-native”:“0.59.4”,“react-native-navigation”:“^2.17.0”,

于 2019-04-13T06:45:34.803 回答
0

Navigation.mergeOptions()应该给出id,而不是名字

我不确定,但我也认为启用和可见的位置错误

Navigation.setRoot({
    root: {
        sideMenu: {
            left: {
                component: {
                    name: 'app.Drawer',
                    id: 'app.Drawer'      // <--- ADD THIS
                },
            },
            center: {
                stack: {
                    children: [{
                        component: {
                            name: 'app.Screen',
                        },
                    }, ],
                },
            },
        },
    },
});
于 2018-12-29T22:58:20.040 回答