реагировать навигация + метеор + редукс, опция навигации не соблюдается или не применяется - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть вопрос, вот мой код:

import React, { Component } from 'react';
import Meteor, {
  withTracker,
} from 'react-native-meteor'
import { connect } from 'react-redux';
class CreateCommunityContainer extends React.Component{

   static navigationOptions = {
       title: 'Community',
       headerRight: (
            <TouchableOpacity onPress={() => {
                this.testFunction(par);
            }}>
                <View style={{marginRight:5}}>
                   <Text>NEXT</Text>
                </View>
            </TouchableOpacity>),
    };

    testFunction(par){
    ... some code
    }

    render(){
        ...some code
    }

}

const CreateCommunityMeteor = withTracker(({userId}) => {
   ...some code         
})(CreateCommunityContainer);

export default connect(mapStateToProps, mapDispatchToProps)(CreateCommunityMeteor);

У меня вопрос, почему навигационная опция не соблюдается или не применяется, я ожидаю, что навигационная опция даст мне заголовок "Сообщество" в строке заголовка, но это не так.но если я положу его в навигационный маршрутизатор, он будет работать как обычно, и как заставить его вступить в силу.Кстати, мне нужно определить navigationOption в классе экрана, а не в маршрутизаторе, поэтому я могу вызывать fucntion в этом классе из компонента headerRight реагирующей навигации.

1 Ответ

0 голосов
/ 12 февраля 2019

Поскольку вы упомянули, что без метеорной функции withTracker ваш компонент ведет себя так, как ожидалось, я считаю, что проблема заключается в withTracker, не учитывающем статическое свойство в новом создаваемом компоненте.

Вывместо этого можно попытаться установить свойство navigationOptions для компонента CreateCommunityMeteor:

const CreateCommunityMeteor = ...

CreateCommunityMeteor.navigationOptions = {
    ...
};

export default connect(...)

Я также заметил, что вы вызываете this в своей статической функции - это не будет работать, так какСтатическая функция не имеет доступа к экземпляру класса.

Точно так же предложенная мной статическая функция также не будет иметь доступа к ней.

Чтобы решить эту проблему, вы можетеустановите navigationOptions в качестве функции: ({navigation}) => {...} и передайте в маршрут то, что вам нужно в качестве параметра.

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