我正在发送来自Android原住民的数据,通过launchoptions在Android中设置一个简单的道具来响应本机。
我成功地接收到了react本机模块中的初始道具,但是现在当我像这样使用StackNavigator时:
const RootStack = createStackNavigator(
{
home: Details,
genre: Genre,
},
{
initialRouteName: 'home',
}
);
const AwesomeProject = createAppContainer(RootStack);
export default AwesomeProject;现在,我无法在主屏幕的构造函数中使用我的Prop。如何将我的初始道具传递到home屏幕?
我使用的react本机版本是0.58.4。
以下是React中完整的代码--原生:
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,在新的react-navigation-3中,您必须直接设置应用程序容器,这样他的解决方案就无法工作。
请帮帮忙。
发布于 2019-02-15 14:08:48
最后,它开始工作,并成功地将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} />;
}
}发布于 2019-02-13 07:47:10
根据文档,您可以定义参数到您的路由。
https://stackoverflow.com/questions/54664628
复制相似问题