4

我正在为我的应用程序实现一个路由库,一个看起来非常好的是react-native-router-flux他们有很好的文档和实现,我只有一个问题。

在他们的所有示例中,场景都包含在根场景中,因此:

<Scene key="root">
  <Scene key="sceneOne" component={SceneOne} />
  <Scene key="sceneOne" component={SceneTwo} />
</Scene>

我试过在没有根场景的情况下使用它,它仍然可以按预期工作:

<Scene key="sceneOne" component={SceneOne} />
<Scene key="sceneOne" component={SceneTwo} />

因此我的问题是,因为我目前不了解根的目的。

4

1 回答 1

4

如果您只是通过在<Router>元素下添加场景来创建场景,那么您不一定需要根元素。例如,以下将起作用:

  render() {
    return <Router>
        <Scene key="login" component={Login} title="Login"/>
        <Scene key="register" component={Register} title="Register"/>
        <Scene key="home" component={Home}/>
    </Router>
  }

但是,如果您使用Actions.create()然后创建场景,则需要一个根元素,因为相邻的 JSX 元素必须包含在封闭标签中。例如(由图书馆的文档拍摄):

import {Actions, Scene, Router} from 'react-native-router-flux';

const scenes = Actions.create(
  <Scene key="root">
    <Scene key="login" component={Login} title="Login"/>
    <Scene key="register" component={Register} title="Register"/>
    <Scene key="home" component={Home}/>
  </Scene>
);

/* ... */

class App extends React.Component {
  render() {
    return <Router scenes={scenes}/>
  }
}
于 2016-10-24T03:26:52.290 回答