react-navigation之TabNavigator, StackNavigator使用配合redux

简介: 我在react-navigation的组件StackNavigator 和TabNavigator组合使用在加上redux,出现如下问题there is no route defined ...

我在react-navigation的组件StackNavigator 和TabNavigator组合使用在加上redux,出现如下问题

there is no route defined for key ***must be one of 

这个类似的在 react-navigation的github也有,StackNavigator里嵌套一个TabNavigator, 


navreducer传递 AppNavigations就放入 <Provider>中 render 出来 显示了

const AppNavigations = ({ dispatch, nav }) => {
	return <Navigator navigation={addNavigationHelpers({ dispatch, state: nav })} />
}
  
const mapStateToProps = state => ({
  nav: state.navreducer,
});

module.exports = connect(mapStateToProps)(AppNavigations);

combineReducers 里还需要配置navReducer

const allReducers = combineReducers({

	nav: navreducers,
});


那么navreducers的配置就是重点了, 不注意 就把TabNavigator里面的route 配置进去了

export const nav = (state, action) => {

    switch (action.type) {
         //TabNavigator 里模块
        case '****':
            return Navigator.router.getStateForAction(
                NavigationActions.navigate({ routeName: 'Tabchild' }),
                state
            );
        case '**':
        //TabNavigator 里模块
            return Navigator.router.getStateForAction(
                NavigationActions.navigate({ routeName: 'Tabchild' }),
                state
            );
        case 'WebDetail':
            return Navigator.router.getStateForAction(
                NavigationActions.navigate({ routeName: 'WebDetail' }), {...state, webViewURL: action.webViewURL }
            );
        default:
            return Navigator.router.getStateForAction(action, state) || state;

    }
}
上面做是不对的, 这样做了就报出上面的错误,正确如下,因为我们在给provider 里提供的就是StackNavigator,这样就对应了

export const navreducer = (state, action) => {
    switch (action.type) {
        case 'WebDetail':
            return Navigator.router.getStateForAction(
                NavigationActions.navigate({ routeName: 'WebDetail' }), 
                {...state, webViewURL: action.webViewURL }
            );
        default:
            return Navigator.router.getStateForAction(action, state) || state;
    }
}


加上redux的好处,比如,在切换页面时 就可以直接 dispatch 切换转跳页面了, 不然换个 同时吧 参数webURl传递给下一个将要展示的页面 
<TouchableOpacity onPress={()=> {
						
			this.props.navigation.dispatch({ 
				type: 'WebDetail', webViewURL: data.alt 
							});
						}}>
</TouchableOpacity>

webview 需要的参数通过state就能获取到

class WebView extends Component {
	render() {
		return <WebView source={{uri: this.props.url}}/>
	}
}


function mapStateToProps(state) {
	return {
		url: state.navreducer.webViewURL
	}
}

当然可以用其他的办法用 navigate 方法切换 传递webViewURL

	<TouchableOpacity onPress={()=> {
		this.props.navigation.navigate('WebDetail', webViewURL);
						}}>
				
	</TouchableOpacity>

在 mapStateToProps输出看 这样就 得通过很多成了看着也觉得数据隐藏的太深了







相关文章
|
4月前
|
前端开发 JavaScript 测试技术
从零开始搭建react+typescript+antd+redux+less+vw自适应项目
从零开始搭建react+typescript+antd+redux+less+vw自适应项目
135 0
|
30天前
|
存储 JavaScript 前端开发
React中使用redux
React中使用redux
127 56
|
23天前
|
存储 JavaScript 前端开发
react redux 实现原理
【8月更文挑战第29天】react redux 实现原理
17 4
|
20天前
|
前端开发 Java UED
瞬间变身高手!JSF 与 Ajax 强强联手,打造极致用户体验的富客户端应用,让你的应用焕然一新!
【8月更文挑战第31天】JavaServer Faces (JSF) 是 Java EE 标准的一部分,常用于构建企业级 Web 应用。传统 JSF 应用采用全页面刷新方式,可能影响用户体验。通过集成 Ajax 技术,可以显著提升应用的响应速度和交互性。本文详细介绍如何在 JSF 应用中使用 Ajax 构建富客户端应用,并通过具体示例展示 Ajax 在 JSF 中的应用。首先,确保安装 JDK 和支持 Java EE 的应用服务器(如 Apache Tomcat 或 WildFly)。
27 0
|
20天前
|
存储 JavaScript 前端开发
探索React状态管理:Redux的严格与功能、MobX的简洁与直观、Context API的原生与易用——详细对比及应用案例分析
【8月更文挑战第31天】在React开发中,状态管理对于构建大型应用至关重要。本文将探讨三种主流状态管理方案:Redux、MobX和Context API。Redux采用单一存储模型,提供预测性状态更新;MobX利用装饰器语法,使状态修改更直观;Context API则允许跨组件状态共享,无需第三方库。每种方案各具特色,适用于不同场景,选择合适的工具能让React应用更加高效有序。
32 0
|
1月前
|
存储 JavaScript 前端开发
"探索Redux的Vuex化:如何在React世界中享受Vue状态管理的优雅与强大"
【8月更文挑战第21天】在现代前端开发中,状态管理至关重要。Vuex作为Vue.js的状态管理库,通过集中式存储和严格规则确保状态变更的追踪。Redux则以其在React生态中的可预测性和灵活性著称。两者都强调单一数据源、状态只读及使用纯函数变更状态。尽管API设计不同,理解Redux的核心概念——单一数据源(`store`)、状态只读与纯函数变更(`reducers`),并参考Vuex的`state`、`mutations`等,能帮助开发者快速掌握Redux,高效管理应用状态。
15 0
|
1月前
|
JavaScript 前端开发 安全
|
2月前
|
Web App开发 JavaScript 前端开发
react18【系列实用教程】搭建开发环境(2024版)Vite+React (官方推荐)(含@配置,react-developer-tools 和 Redux DevTools 下载安装)
react18【系列实用教程】搭建开发环境(2024版)Vite+React (官方推荐)(含@配置,react-developer-tools 和 Redux DevTools 下载安装)
182 0
|
4月前
|
存储 JavaScript 前端开发
基于React和Redux的待办事项列表应用
基于React和Redux的待办事项列表应用
52 0
|
4月前
|
JavaScript 前端开发 搜索推荐
构建一个基于React和Redux的简易电商购物车应用
构建一个基于React和Redux的简易电商购物车应用
53 0