首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将初始道具(或启动选项)传递到第一幕?

如何将初始道具(或启动选项)传递到第一幕?
EN

Stack Overflow用户
提问于 2019-02-13 07:21:35
回答 2查看 4.2K关注 0票数 2

我正在发送来自Android原住民的数据,通过launchoptions在Android中设置一个简单的道具来响应本机。

我成功地接收到了react本机模块中的初始道具,但是现在当我像这样使用StackNavigator时:

代码语言:javascript
复制
const RootStack = createStackNavigator(
    { 
        home: Details,
        genre: Genre,
    },
    { 
        initialRouteName: 'home',
    }
);
const AwesomeProject = createAppContainer(RootStack);
export default AwesomeProject;

现在,我无法在主屏幕的构造函数中使用我的Prop。如何将我的初始道具传递到home屏幕?

我使用的react本机版本是0.58.4

以下是React中完整的代码--原生

代码语言:javascript
复制
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代码

代码语言:javascript
复制
@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中,您必须直接设置应用程序容器,这样他的解决方案就无法工作。

请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-15 14:08:48

最后,它开始工作,并成功地将initialProps从本地安卓系统发送到响应--原生StackNavigator的第一幕是这样的:

代码语言:javascript
复制
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} />;
  }
}
票数 6
EN

Stack Overflow用户

发布于 2019-02-13 07:47:10

根据文档,您可以定义参数到您的路由。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54664628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档