android - 如何将初始 Prop (或启动选项)传递给第一个场景?

标签 android reactjs react-native hybrid-mobile-app

我通过 launchoptions 在 Android 中设置一个简单的属性,将数据从 Android Native 发送到 React native。

我已经成功地接收了 react-native 模块中的初始 Prop ,但是现在当我像这样使用 StackNavigator 时:

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

现在我无法在 HomeScreen 的构造函数中使用我的 Prop。如何将我的初始 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 ,在新的 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} />;
  }
}

关于android - 如何将初始 Prop (或启动选项)传递给第一个场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54664628/

相关文章:

Android调整位图大小

java - 即使连接处于 Activity 状态,HTTP 请求也会失败

javascript - Axios:基本身份验证不适用于 GET 请求

css - Webpack Sass 导入 URL 解析

javascript - 警告 : React. createElement:类型对 React Native Picker 无效

react-native - opneUrl react native 链接调用,mailto

java - 如何让android操作栏后退按钮返回到fragment

Android O HIDL 不可用

javascript - 试图传递 JSON 对象 REACTJS 不工作

android - 权限总是返回 never_ask_again