Как передать начальный реквизит (или запуск) в первую сцену? - PullRequest
0 голосов
/ 13 февраля 2019

Я отправляю данные из Android Native в React native, установив в Android простую подпорку через launchoptions.

Мне удалось получить начальные реквизиты в модуле реагировать-нативно, но теперькогда я использую StackNavigator следующим образом:

const RootStack = createStackNavigator(
    { 
        home: Details,
        genre: Genre,
    },
    { 
        initialRouteName: 'home',
    }
);
const AwesomeProject = createAppContainer(RootStack);
export default AwesomeProject;

Теперь я не могу использовать мой Prop в конструкторе HomeScreen.Как передать начальные реквизиты на экран home?

Реактивная версия, которую я использую: 0.58.4

Вот полный текст Код в React-Native :

import { 
  createStackNavigator, 
  createAppContainer 
} from 'react-navigation';

import Genre from './app/Genre';
import Details from './app/Details';

const RootStack = createStackNavigator(
    { 
        home: Details,
        genre: Genre,
    },
    { 
        initialRouteName: 'home',
    }
);

const AwesomeProject = createAppContainer(RootStack);
export default AwesomeProject;

Вот код Android :

@Override
    protected ReactActivityDelegate createReactActivityDelegate() {
        return new ReactActivityDelegate(this, getMainComponentName()) {
            @Nullable
            @Override
            protected Bundle getLaunchOptions() {
                Bundle bundle = new Bundle();
                String str = MainActivity.getMovieID();
                bundle.putString("movie_id", str);
                return bundle;
            }
        };
    }

Моя проблема точно такая же, как эта: https://github.com/react-navigation/react-navigation/issues/634

Но проблема в том, что решение, данное пользователем, предназначено для более старой версии реакции, и в новой react-navigation-3 вы должны настроить контейнер приложения напрямую, чтобы его решение не работало.

Пожалуйста, помогите.

Ответы [ 2 ]

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

Наконец-то получил его на работу и успешно смог отправить initialProps с нативного андроида в первую сцену реагирования-натива StackNavigator, например:

const StackNavigator = createStackNavigator(
    { 
        home:  {screen: Details},
        genre: {screen: Genre},
    },
    { 
        initialRouteName: 'home',
    }
);

const RootStack = createAppContainer(StackNavigator)

export default class AwesomeProject extends Component {
    constructor(props){
        super(props)
    }

    render() {
    return <RootStack screenProps={this.props.movie_id} />;
  }
}
0 голосов
/ 13 февраля 2019

Согласно документу, вы можете определить params для ваших маршрутов

...