react-navigation v5x版本 路由嵌套以及不同层路由间的传参

前:近2月未登,再看发现官网大变样,版本大迭代,从配置项变成了组件化。

路由嵌套
见官网,传送门react-navigation路由嵌套

路由传参 :
正常的传参见官网,传送门react-navigation路由传参

正题,路由跨层传参,解锁隐藏技能。

情景:例如页面PA使用了stack、bottomNav或者topNav路由导向RA页,但是PA页面的数据或者函数需要在路由导向页RA中使用。

在5x版本以前似乎没发现如何实现,但5x将导航配置组件化后,似乎就变得可能了。产看了官网文档的路由传参部分,描述非常之简单,没有提及这类情况,但由于路由配置已经组件化了,按理已经有了组件的特性,遂尝试了一下,果然,可行!

前排分享吃个蛋。

贴个小栗子:

import { createStackNavigator } from '@react-navigation/stack';

const Stack = createStackNavigator();

export default function MyStack() {
  return (
  	<Stack.Navigator>
      <Stack.Screen 
      	name="Home" 
      	component={Home} 
**

## //看看这里 👇 ok你就可以在跳转的目标页愉快的接受数据了,整个页面变成了上层路由页的可控页面了

**
      	initialParams={this.arguments[0].initialParams}
      />
      <Stack.Screen name="Notifications" component={Notifications} />
      <Stack.Screen name="Profile" component={Profile} />
      <Stack.Screen name="Settings" component={Settings} />
    </Stack.Navigator>
  );
}
...
import MyStack from '...'

class Test extends React.Component{
	
	state={
		data:1
	}
	render(){
		<MyStack 
			data={this.state.data}
		/>
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
React Router v6中,路由嵌套的写法有所改变。以下是一个示例: ```jsx import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'; import { Outlet } from 'react-router-dom'; const App = () => { return ( <Router> <Routes> <Route path="/app" element={<ThisLayout />}> <Route path="/" element={<PostsList />} /> <Route path="/singlePostPage/:id" element={<SinglePostPage />} /> </Route> </Routes> </Router> ); }; const PostsList = () => { // ... return ( <section> <h2>posts</h2> {renderedPosts} <Outlet /> {/* 子路由渲染位置 */} </section> ); }; const SinglePostPage = () => { // ... }; const ThisLayout = () => { // ... }; export default App; ``` 在v6中,我们使用`Routes`组件来定义路由,而不再使用`Switch`组件。在父路由中,我们使用`Route`组件来定义子路由。子路由的元素可以通过`element`属性指定。在子路由的父组件中,我们可以使用`Outlet`组件来渲染子路由的内容。 希望这个例子能帮助你理解React Router v6中的路由嵌套写法。 #### 引用[.reference_title] - *1* [解决react-router-dom V6路由嵌套时子路由无法显示的问题](https://blog.csdn.net/frank7023/article/details/128913988)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [React Router v6 路由配置,嵌套路由](https://blog.csdn.net/Snow_GX/article/details/123656412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [react-router-dom v6版本 嵌套路由](https://blog.csdn.net/jzh1359314792/article/details/126526047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值