Реактивная навигация не является функцией? - PullRequest
1 голос
/ 29 мая 2019

Я использую React Navigation.Я направляю вас к разговору после страницы вставки записи.Я предоставляю автоматическое обновление при перенаправлении.Я отправляю параметр.Но это не работает.Я не знаю, где я делаю ошибку.

Я получаю эту ошибку.

Uncaught typeerror.Ошибка типа: s.handleRefresh не является функцией.(В s.handleRefresh () 's.handleRefresh' не определено

LeadDetail.js Page

    static navigationOptions = ({ navigation }) => {
        const { params = {} } = navigation.state;        
        return {
            title: 'Müşteri Adayı Detay',
            headerRight: (
                <TouchableHighlight activeOpacity={0.4} underlayColor='transparent' onPress={() => navigation.navigate('CreateMeeting', { parentId: params.id, parentType: 'Lead' })} style={{marginRight: 12 }}>
                    <Icon
                        name="calendar-check-o"
                        size={25}
                        color="white"
                    />
                </TouchableHighlight>
            )
        };
    };

CreateMeeting.Страница js

    dataSuccess(response) {
        this.setState({ buttonLoading: false });

        Alert.alert(
            'Tebrikler!',
            'Meeting başarılı bir şekilde kayıt edildi',
            [
                { text: 'Tamam', onPress: () => this.props.navigation.navigate('Meeting', { refreshMeeting: true }) }
            ]
        );
    }

Meeting.js Страница

    static navigationOptions = ({ navigation }) => {
        const { params } = navigation.state;
        let refresh = navigation.getParam('refreshMeeting', false);

        if(refresh) {            
            params.handleRefresh();
        }
        return {
            title: 'Görüşmeler',
            headerRight: (
                <View style={{ flexDirection: 'row' }}>
                    <TouchableHighlight activeOpacity={0.4} underlayColor='transparent' onPress={navigation.getParam('setOverlay')}>
                        <Icon
                            name="filter"
                            size={25}
                            color="white"
                        />
                    </TouchableHighlight>

                    <TouchableHighlight activeOpacity={0.4} underlayColor='transparent' onPress={navigation.getParam('setModalVisible')} style={{ marginRight: 12, marginLeft: 20 }}>
                        <Icon
                            name="plus"
                            size={25}
                            color="white"
                        />
                    </TouchableHighlight>                    
                </View>
            )
        };
    };

1 Ответ

0 голосов
/ 29 мая 2019

Вы устанавливаете параметр handleRefresh?Вместо params.handleRefresh(); не должно ли быть params.refresh();?Кроме того, s.handleRefresh где это в вашем коде?Я думаю, что есть опечатка или что-то в этом роде, и я считаю, что s.handleRefresh на самом деле params.handleRefresh

Пожалуйста, измените ваш вопрос, если ничего из этого не является правильным.

Я не знаю, где вы устанавливаете параметр handleRefresh, но если вы устанавливаете его (пожалуйста, проверьте это и добавьте код, где вы это делаете), возможно, это причина, по которой это происходит.

Если вы посмотрите на документы , у них нет

React Navigation не гарантирует, что ваш компонент экрана будет смонтирован перед заголовком.Поскольку параметр componentCid установлен в componentDidMount, он может быть недоступен для нас в navigationOptions.Обычно это не будет проблемой, потому что компоненты onPress for Button и Touchable ничего не сделают, если обратный вызов равен нулю.Если у вас здесь есть свой собственный компонент, вы должны убедиться, что он работает как положено, с нулем для его свойства обработчика прессы.

Это означает, что заголовок может отображаться до того, как компонент вызовет setParams, и чтоне загружаю ваши параметры в первый раз.Что нужно сделать, чтобы проверить, когда заголовок отображается первым.

//            added some checking 
if(refresh && params && params.handleRefresh) {            
    params.handleRefresh();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...