博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React Router中NamedComponent与Params使用
阅读量:6002 次
发布时间:2019-06-20

本文共 2144 字,大约阅读时间需要 7 分钟。

本文从属于笔者的系列 ,是对于的补充

NamedComponent

在正常的Route项配置中<Route path="messages/:id" component={Message} />,在component这个Prop中我们传入的是某个组件名,而如果我们需要在路由配置时动态构造一些组件,譬如我们希望传入标题为HelloWorldMessage组件时,我们会需要以下配置:

const TitledMessage = ()=>{
}

这里是传入了一个函数式声明的组件,关于函数式声明的组件可以参考。而React Router官方也提供了我们另一种动态构造组件的方式,即是所谓的NamedComponent,即允许在子路由声明时将Props值作为路由配置参数传入父路由,譬如我们创建了需要传入两个Props参数的组件:

const NamedComponents = (props) => (  
{props.title}
{props.subTitle}
)

而NamedComponent需要的两个输入参数其实也是两个可组合的组件:

const Title = () => (  

Hello from Title Component

)const SubTitle = () => (

Hello from SubTitle Component

)

然后我们可以为NamedComponent组件创建一个单独的路由,而其默认子路由可以是两个组件:

最后的效果如下所示:

Params

Route Parameters

很多应用的不可或缺的一个点就是从URL中读取路由参数,React Router自然也为我们提供了路由参数设置与读取的功能,譬如在定义路由时,我们可以直接将参数定义入路由中:

而在需要读取该参数的组件中:

const About = (props) => (  

Welcome to the About Page

{props.params.name}

)

有时候,我们也需要设置可选参数,譬如如果按照上面的配置方案我们直接访问/#/about是无法访问到About组件的,有点类似于正则表达式的写法:

另有一个小Trick,有时候我们在组件内部展示元素的时候是需要根据是否有参数传入然后再判断是否需要显示:

{ props.params.name && 

Hello, {props.params.name}

}

Query String Parameters:查询参数

上文介绍的是按照路由参数的方式进行参数传递,就像HTTP URL标准一样,有时候我们也需要按照查询参数的方式来进行参数传递,譬如我们定义了如下基于查询参数的组件:

const Query = (props) => (  

{props.location.query.message}

)

然后我们需要在刚才构建好的路由地址中添加上该组件:

...
...

而对应的带参数传递的跳转到该组件的Link为:

Route Query

最后,我们在官方的总的例子中来看下两种参数的使用:

import React from 'react'    import { render } from 'react-dom'    import { browserHistory, Router, Route, Link } from 'react-router'    import withExampleBasename from '../withExampleBasename'    const User = ({ params: { userID }, location: { query } }) => {      let age = query && query.showAge ? '33' : ''      return (        

User id: {userID}

{age}
) } const App = ({ children }) => (
  • Bob
  • Bob With Query Params
  • Sally
{children}
) render((
), document.getElementById('example'))

转载地址:http://mldmx.baihongyu.com/

你可能感兴趣的文章
ubuntu14.04安装百度云Bcloud
查看>>
一起谈.NET技术,C#中访问私有成员
查看>>
盘点云计算服务中的隐患
查看>>
分享Silverlight/Windows8/WPF/WP7/HTML5周学习导读(6月18日-6月24日)
查看>>
本书资料下载汇总
查看>>
汽车知识:车内异味的清除方法
查看>>
大整数乘法
查看>>
SQL语句使用详解
查看>>
在windows中将Tomcat作为服务启动
查看>>
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
android - ADT本地配置、sdk配置
查看>>
I.MX6 dhcpcd 需要指定网卡
查看>>
linux的性能优化
查看>>
Oracle误删除表空间的恢复
查看>>
利用Python进行数据分析(9) pandas基础: 汇总统计和计算
查看>>
有限状态机FSM详解及其实现
查看>>
平台调用之如何利用VS2013 C#调试C++DLL库
查看>>
多线程的例子
查看>>
卸载oracle
查看>>
EndpointAddress——不只是一个Uri[上篇]
查看>>