Есть ли способ прочитать параметры перед использованием функции mergeOptions в реагировать на встроенную навигацию v2? - PullRequest
0 голосов
/ 05 марта 2019

Есть ли способ прочитать параметры перед использованием функции mergeOptions.Я пытаюсь добавить SideMenu, который открывается и закрывается с той же кнопкой.Но чтобы справиться с этой логикой, вместо того, чтобы использовать избыточность, я хочу прочитать параметры перед слиянием, поэтому я могу просто сделать что-то вроде visible: !pastVisible.

navigationButtonPressed({ buttonId }) {
    Navigation.mergeOptions(this.props.componentId, {
        sideMenu: {
            'left': {
                visible: false
            }
        }
    });
    console.log(`Se presiono ${buttonId}`);
}

Так что в основном я хочу прочитатьЗначение видимой опции до того, как ее изменили.

1 Ответ

0 голосов
/ 05 марта 2019

К настоящему времени я могу достичь этого только с помощью приставки.

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

import { connect } from 'react-redux';
import { toggleSideMenu } from './../../store/actions/index';

class SideDrawer extends Component {

    constructor(props) {
        super(props);
        Navigation.events().registerComponentDidDisappearListener(({ componentId }) => {
            this.props.toggleSideMenu(false);
        });
    }

    render() {
        return (
            <View>
                <Text>This is the sidedrawer</Text>
            </View>
        );
    }

}

const mapDispatchToProps = dispatch => {
    return {
        toggleSideMenu: (visible) => dispatch(toggleSideMenu(visible))
    };
};
export default connect(null, mapDispatchToProps)(SideDrawer);

Затем я просто добавляю слушателей в компонент sidemenu.В зависимости от случая я обновляю текущее состояние компонента (видимое или нет).

Наконец, на компонентах, где я хочу использовать кнопку бокового ящика, я просто реализую метод navigationButtenPressed.Затем я просто вызываю редуктор, чтобы узнать текущее видимое состояние, и переключаю его.

navigationButtonPressed({ buttonId }) {
    const visible = !this.props.sideMenu;
    Navigation.mergeOptions(this.props.componentId, {
        sideMenu: {
            'left': {
                visible: visible
            }
        }
    });
    this.props.toggleSideMenu(visible);
}

Если есть более простой способ добиться этого, я буду рад узнать об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...