React Native Navigation Wix V2 Действие кнопки верхней панели - PullRequest
0 голосов
/ 19 декабря 2018

Я использую навигацию WIX V2, я хочу создать левую кнопку для переключения 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, 
        },
      },
    });
  }

Я пытался следовать документам здесь, но событие не регистрируется прослушивателем событий нажата кнопка навигации.

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

Вы можете попробовать код ниже.Надеюсь, что это поможет.

Экран «Ваш дом» или «Приложение»:

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"
             }
          }]
        }
      }
    }
  }   
});

Версия пакета: «Reaction-native»: «0.59.4"," response-native-navigation ":" ^ 2.17.0 ",

0 голосов
/ 30 декабря 2018

Navigation.mergeOptions() должен быть указан идентификатор, а не имя

Я не уверен, но я также думаю, что включенные и видимые находятся не в том месте

Navigation.setRoot({
    root: {
        sideMenu: {
            left: {
                component: {
                    name: 'app.Drawer',
                    id: 'app.Drawer'      // <--- ADD THIS
                },
            },
            center: {
                stack: {
                    children: [{
                        component: {
                            name: 'app.Screen',
                        },
                    }, ],
                },
            },
        },
    },
});
...