我想将Redux用于React Native . 目前我没有设置数据管理,因此index.ios.js具有以下内容:
renderScene(route, navigator){
this._navigator = navigator
return (
<route.component navigator={navigator} {...route.passProps}/>
)
}
<Navigator
configureScene={this.configureScene}
initialRoute={{name: 'Login', component: Login}}
renderScene={(route, navigator) => this.renderScene(route, navigator)}
style={styles.container}
navigationBar={
<Navigator.NavigationBar
style={styles.navBar}
routeMapper={NavigationBarRouteMapper}
/>
}
/>
我打算切换到Redux . 使用我当前的设置,不使用任何框架,只有例外是react-router,使用Redux导航的最佳方式是什么?使用存储,缩减器和操作的示例将非常有用 .
2 回答
我建议你使用react-navigation本地和网络环境它将replace NavigationExperimental看看下面的example .
为iOS和Android构建的组件
在移动应用程序,Web应用程序和服务器呈现之间共享导航逻辑 .
Documentation非常简单
开发自己的navigation views
很容易!
只需在您的应用中定义导航即可 .
......并导航
并执行以下操作以添加redux只需定义您的减速器...
...并使用
addNavigationHelpers
在组件中导航编辑:现在应该使用react-navigation而不是NavigationExperimental .
我建议您使用NavigationExperimental而不是Navigator . 最后一个是折旧的 . RN文档中有一个例子,right here . 它使用简单的减速器来管理您的导航状态 . 但是你也可以使用Redux处理这个状态,因为它是相同的逻辑 .
This is my setup with tabs, using Redux and NavigationExperimental:
navigator.js(注意:CardStack中的renderOverlay prop将在0.32中重命名为renderHeader)
actions.js
reducer.js( note: I use immutable here, but it's up to you to use whatever fit you )
最后,在MyScene.js组件中,您可以通过测试当前路径(例如,使用开关)来简单地处理要显示的组件 . 通过在组件中传递导航功能,您可以管理场景(即:this.props.navigate({type:'push',route:{key:'search'}})) .
请注意,您可以根据需要处理您的州和您的行为 . 理解的主要思想是如何减少状态,无论你是否使用redux .