如何将初始道具(或启动选项)传递给第一个场景?
How do I pass initial props (or launchoptions) to first scene?
我通过 launchoptions
.
在 Android 中设置一个简单的道具,将数据从 Android Native 发送到 React Native
我在 react-native 模块中成功接收了初始道具,但现在当我像这样使用 StackNavigator
时:
const RootStack = createStackNavigator(
{
home: Details,
genre: Genre,
},
{
initialRouteName: 'home',
}
);
const AwesomeProject = createAppContainer(RootStack);
export default AwesomeProject;
现在我无法在 HomeScreen 的构造函数中使用我的 Prop
。如何将我的初始道具传递到 home
屏幕?
我使用的react-native版本是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
中你必须直接设置你的应用程序容器,所以他的解决方案不起作用。
请帮忙。
根据文档,您可以将 params 定义到您的路线
终于让它工作了,并且成功地将 initialProps
从原生 android 发送到 react-native 的第一个 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} />;
}
}
我通过 launchoptions
.
我在 react-native 模块中成功接收了初始道具,但现在当我像这样使用 StackNavigator
时:
const RootStack = createStackNavigator(
{
home: Details,
genre: Genre,
},
{
initialRouteName: 'home',
}
);
const AwesomeProject = createAppContainer(RootStack);
export default AwesomeProject;
现在我无法在 HomeScreen 的构造函数中使用我的 Prop
。如何将我的初始道具传递到 home
屏幕?
我使用的react-native版本是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
中你必须直接设置你的应用程序容器,所以他的解决方案不起作用。
请帮忙。
根据文档,您可以将 params 定义到您的路线
终于让它工作了,并且成功地将 initialProps
从原生 android 发送到 react-native 的第一个 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} />;
}
}