本机如何通过导航器将道具传递到另一个活动/视图

时间:2016-08-23 20:06:24

标签: react-native

这似乎是一个简单的解决方案(因为它对我来说很直观),但我无法找到任何可行的解决方案。

这是我的导航器 - 渲染方法代码:

  render() {
    return (
      <Navigator initialRoute={{title:'Games', component:Games}}
      configureScene={() => {
                    return Navigator.SceneConfigs.FloatFromRight;
                }}
      renderScene={(route, navigator) =>
        {
          if (route.component) {
            return React.createElement(route.component, {navigator});
          }
        }
      } />
    );
  }

以下是我传递道具的方式:

this.props.navigator.push({title: 'MainActivity', component:MainActivity, gameKey:key, passProps:{title:'bla'}});

这是一个MainActivity,我想要获得这些道具。

我试过了:

this.props.route.gameKey, 
this.route.gameKey,
this.props.gameKey

既不起作用,我明白可能是我应该通过renderScene专门传递这些道具,反之亦然。可能是通过createElement传递路径?

请帮忙。

问题更严重,因为我已经通过导航器将道具从一个活动传递到另一个活动。

因此,每次需要时(从任何活动到任何活动)都会使用的解决方案正在使用

return React.createElement(route.component, {navigator, route});

感谢@stereodenis。

在任何活动中像这样推送后:this.props.navigator.push({title: 'MainActivity', component:MainActivity, gameKey:key, passProps:{title:'bla'}});

然后通过:this.props.route.gameKey

访问它们

为了完全清楚 - 路由现在是可访问的,因为每次U推送时都会在createElement中传递{navigator,route},所以这是另一个道具。

2 个答案:

答案 0 :(得分:3)

Navigator组件的renderScene应为:

{ title, gameKey, passProps } = route;
return React.createElement(route.component, {
  navigator,
  title,
  gameKey, 
  passProps
})

答案 1 :(得分:1)

对于NavigatorIOS,

passProps更多。对于Navigator,renderScene将完成工作。通常,推送路由名称。 renderScene将决定声明性JSX中的组件和属性。

推送:

this.props.navigator.push({name: 'Main', gameKey: someKey});

RenderScene:

renderScene(route, navigator) {
  let component;
  switch(route.name) {
    case 'Main':
      component = <MainActivity title="Main Activity" gameKey={route.gameKey} />;
    default:
      component = null;
  }
  return component;
}