使用react-breadcrumbs-dynamic
这是完全独立于路由器的解决方案,你可以将其与任何版本的React Router(2或3或4)或任何其他用于React的路由库一起使用,或者完全不进行路由。您只需要指定面包屑项目及其道具的组件。然而道具和部件应符合规定 分离。BreadcrumbsItem在组件和路由层次结构中的任何位置,都应在中介组件中指定道具。
基础使用
const Profile = ({user}) => (
<div>
<BreadcrumbsItem
to=`/user/${user.login}`
icon='account-box'
>
{user.firstName} {user.lastName}
</BreadcrumbsItem>
<h1>
{user.firstName} {user.lastName}
</h1>
</div>
)
安装
npm install --save react-through react-breadcrumbs-dynamic
基础配置
你已经使用声明通信通过 react tree react-through?只需添加<ThroughProvider/>到您的React组件树的根目录:
import {ThroughProvider} from 'react-through'
const theApp = (
<ThroughProvider>
<App />
</ThroughProvider>
)
ReactDOM.render(theApp, document.getElementById('root'))
实例配置
在此示例中,react-routerv4 <NavLink>用作面包屑项目:
import {Breadcrumbs} from 'react-breadcrumbs-dynamic'
const Page = (props) => (
return (
<div className="App">
<Header>
<Breadcrumbs
separator={<b> / </b>}
item={NavLink}
finalItem={'b'}
finalProps={{
style: {color: 'red'}
}}
/>
</Header>
{props.children}
<Footer>
<Breadcrumbs/>
</Footer>
</div>
)
}
请注意,item并且finalItem需要react组件(类)而不是react元素。但是separator需要反应元素。
默认情况下,项目顺序基于URL长度。您可以根据需要覆盖排序顺序,只需在compareprop中指定比较函数即可,该比较函数接收包含面包屑项prop的一对对象。例如:<Breadcrumbs compare={(a,b)=>a.weight-b.weight} removeProps={{weight: true}} />。
如果您使用<a>基于标签的项目,那么您会发现将prop映射到prop 上renameProps或 将其duplicateProps有用,如下所示: 。tohref<Breadcrumbs renameProps={{to:"href"}} />
将项目添加到面包屑
反应树中的每个路由组件通常都与路由和相应的面包屑相关联。每个组件都可以通过<BreadcrumbsItem>使用任何道具和子项进行渲染来添加其面包屑项目。
具有面包屑项目的路由组件的示例树:
import {BreadcrumbsItem} from 'react-breadcrumbs-dynamic'
const App = (props) => (
<div>
<BreadcrumbsItem to='/'>Main Page</BreadcrumbsItem>
{props.children}
<Route exact path="/user" component={User} />
</div>
)
const User = (props) => (
<div>
<BreadcrumbsItem to='/user'>Home</BreadcrumbsItem>
<h2>Home</h2>
{props.children}
<Route exact path="/user/contacts" component={Contacts} />
</div>
)
const Contacts = (props) => (
<div>
<BreadcrumbsItem to='/user/contacts'>Contacts</BreadcrumbsItem>
<h2>Contacts</h2>
...
</div>
)
您可以通过任何方向通过反应树声明性地传递带有任何数据,函数,组件等的道具,因为 react-through 允许这样做。
结果
上面代码的结果将表示面包屑,如下所示:
<NavLink to='/'>Main Page</NavLink>
<b> / </b>
<NavLink to='/user'>Home</NavLink>
<b> / </b>
<b to='/user/contacts'>Contacts</b>
组成和功能
面包屑实例在实施Breadcrumbs部件,这是through container在以下方面 react-through。
| 属性 | 类型 | 默认 | 描述 |
|---|---|---|---|
separator |
元件 | undefined |
面包屑项目之间的分隔符 |
item |
零件 | a |
面包屑项目的组成部分 |
finalItem |
零件 | item道具价值 |
最终面包屑项目的组成部分 |
finalProps |
宾语 | {} |
最终道具-将覆盖中指定的 BreadcrumbsItem |
container |
零件 | span |
包装器组件 |
containerProps |
宾语 | {} |
道具container组件 |
compare |
功能 | (a,b)=> a.to.length-b.to.length | 比较功能,用于分类项目 |
hideIfEmpty |
布尔值 | false |
显示或隐藏面包屑容器(如果存在或不存在) |
renameProps |
宾语 | {} |
将道具传递的道具重命名BreadcrumbsItem为item |
duplicateProps |
宾语 | {} |
重复的道具物品传递BreadcrumbsItem到item |
removeProps |
宾语 | {} |
道具不会从道具传递BreadcrumbsItem到item |
该BreadcrumbsItem组件是through agent具有支撑力的关键。to
该BreadcrumbsItem组件可能有任何道具,也可能有孩子。的每个道具BreadcrumbsItem将传递到中的item或finalItem道具中指定的相应面包屑组件Breadcrumbs。只有一个道具是强制性的。
| 属性 | 类型 | 默认 | 描述 |
|---|---|---|---|
to |
串 | 需要 | 带URL的必填必填方位键 |
... |
任何 | 任何属性-将映射到对应的面包屑项目 |
withBreadcrumbsItem() 功能
高级用法高级组件功能。它获得一个参数与您的自定义组件的反应和返回这将有相应的组件breadcrumbs在其道具与方法item(),并items()像 throughAgent从react-through。
this.props.breadcrumbs.item() 和 this.props.breadcrumbs.items()
先进的使用方法来配置您的react组件的面包屑项目。这些方法将通过withBreadcrumbsItem功能HOC添加到props 。该函数item()接受一个带有props的react组件,该函数 items()接受带有子代的react组件,子组件可以包含任意数量的组件以创建相应数量的面包屑项。这些功能的面包屑项目可以是任何反应组件,而只有道具才有意义。在这种情况下,Dummy和Item组件由库导出。如果不再需要当前组件来表示任何面包屑项目,则每个函数都接受null以将面包屑项目重置为无。
常数
该through area库使用的名称在breadcrumbsThroughArea变量中定义 。
包含方位键的道具名称在中定义 breadcrumbsBearingKey。
import { breadcrumbsThroughArea } from 'react-breadcrumbs-dynamic'
import { breadcrumbsBearingKey } from 'react-breadcrumbs-dynamic'
使用react-breadcrumbs-dynamic的更多相关文章
- [React] Asynchronously Load webpack Bundles through Code-splitting and React Suspense
One approach to building high performance applications with webpack is to take advantage of code-spl ...
- React笔记
React JS Tutorials for Beginners - 1 - Getting Started https://www.youtube.com/watch?v=-AbaV3nrw6E&a ...
- Extjs5.0中的新特性
We are excited that Ext JS 5 is now available! Ext JS 5 introduces many new and exciting improvement ...
- ANGULAR 2 FOR REACT DEVELOPERS
Now that Angular 2 is in beta, the time has come for us to drop everything and learn something new, ...
- [转] React Native Navigator — Navigating Like A Pro in React Native
There is a lot you can do with the React Native Navigator. Here, I will try to go over a few example ...
- React和动态网站接口的经济学
来自: React and the economics of dynamic web interfaces 自从2000开始我就一直在做web开发,曾见过很多以各种库和框架的起起落落,这些库和框架作为 ...
- React配合Webpack实现代码分割与异步加载
这是Webpack+React系列配置过程记录的第四篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...
- React服务器端渲染值Next.js
昨天leader给分配了新任务,让熟悉一下ssr,刚开始有点懵,啥玩意?百度了一下,不就是服务器端渲染(server side render,简称: ssr). ssr简介 服务端渲染一个很常见的场景 ...
- 记React+.NetCore API实现动态列导出
1.效果演示 2.用到的第三方类库 前端:React,Dva,Antd 后端:ASP.NET CORE,System.Linq.Dynamic.Core,EPPlus.Core 3.基本思路 第一:E ...
- react源码总览(翻译)
用react也有段时间了, 是时候看看人家源码了. 看源码之前看到官方文档 有这么篇文章介绍其代码结构了, 为了看源码能顺利些, 遂决定将其翻译来看看, 小弟英语也是半瓢水, 好多单词得查词典, 不当 ...
随机推荐
- 简述同步和异步,以及js的任务队列.
javascript是单线程的一门语言,所以在执行任务的时候,所有任务必须排队,然后一个一个的执行.这就是同步模式 所以同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个 ...
- python编程【环境篇】- 如何优雅的管理python的版本
简介 之前的文章(Python2还是python3 )中我们提到,建议现在大家都采用python3,因为python2在今年年底将不在维护.但在实际的开发和使用python过程中,我们避免不了还得用到 ...
- Python调用函数加括号和不加括号的区别
Python调用函数加括号和不加括号的区别 # -*- coding: utf-8 -*- #!/usr/bin/env python # @Time : 2018/7/3 10:03 # @Desc ...
- python_day3(文件处理)
1.文件处理 #Author:Elson Zeng #data = open("test").read() # f = open("test",'a',enco ...
- Elasticsearch系列---Elasticsearch的基本概念及工作原理
基本概念 Elasticsearch有几个核心的概念,花几分钟时间了解一下,有助于后面章节的学习. NRT Near Realtime,近实时,有两个层面的含义,一是从写入一条数据到这条数据可以被搜索 ...
- kubernetes 控制器详解【持续完善中】
目录 资源创建详解 一:Pod及常用参数 1.简介 2.模板 3.删除pod 4.设置Pod主机名 5.镜像拉取策略(ImagePullPolicy) 二:RC 1.简介 2.模板 三:Deploym ...
- PHP Laravel 中使用简单的方法跟踪用户是否在线
今天,我的任务是,在 Laravel 应用程序用户个人资料页面上,用户名旁边添加一个绿点,表示他们是否在线.我首先想到的是,我们将需要启动一个 node.js 服务器并跟踪每个用户的活动套接字连接.然 ...
- hdu 1269 迷宫城堡 (tarjan)
迷宫城堡Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- Json模块和Pickle模块的使用
在对数据进行序列化和反序列化是常见的数据操作,Python提供了两个模块方便开发者实现数据的序列化操作,即 json 模块和 pickle 模块.这两个模块主要区别如下: json 是一个文本序列化格 ...
- 深入ObjC GCD中的dispatch group工作原理。
本文是基于GCD的支持库libdispatch的源代码分析的结果或是用于作为源代码阅读的参考,尽量不帖代码,力求用UML图来说明工作流. 本文参考的源代码版本为v501.20.1,如有兴趣请自行到苹果 ...