我正在通过通过launchoptions
在Android中设置一个简单的Prop。
我已经成功地接收了反应新模块中的初始道具,但是现在我使用StackNavigator
时:
const RootStack = createStackNavigator(
{
home: Details,
genre: Genre,
},
{
initialRouteName: 'home',
}
);
const AwesomeProject = createAppContainer(RootStack);
export default AwesomeProject;
现在,我无法在HomeScreen的构造函数中使用Prop
。如何将初始道具传递到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/reaect-navigation/issues/634
,但问题是用户提供的解决方案是针对较旧版本的React,在新的react-navigation-3
中,您必须直接设置应用程序容器,因此他的解决方案不起作用。
请帮助。
终于使它起作用,并成功地将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} />;
}
}
根据文档,您可以将参数定义到路由