这是完全独立于路由器的解决方案,你可以将其与任何版本的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 宾语 {} 将道具传递的道具重命名BreadcrumbsItemitem
duplicateProps 宾语 {} 重复的道具物品传递BreadcrumbsItemitem
removeProps 宾语 {} 道具不会从道具传递BreadcrumbsItemitem

BreadcrumbsItem组件是through agent具有支撑力的关键。to

BreadcrumbsItem组件可能有任何道具,也可能有孩子。的每个道具BreadcrumbsItem将传递到中的itemfinalItem道具中指定的相应面包屑组件Breadcrumbs。只有一个道具是强制性的。

属性 类型 默认 描述
to 需要 带URL的必填必填方位键
... 任何   任何属性-将映射到对应的面包屑项目

withBreadcrumbsItem() 功能

高级用法高级组件功能。它获得一个参数与您的自定义组件的反应和返回这将有相应的组件breadcrumbs在其道具与方法item(),并items()像 throughAgentreact-through

this.props.breadcrumbs.item() 和 this.props.breadcrumbs.items()

先进的使用方法来配置您的react组件的面包屑项目。这些方法将通过withBreadcrumbsItem功能HOC添加到props 。该函数item()接受一个带有props的react组件,该函数 items()接受带有子代的react组件,子组件可以包含任意数量的组件以创建相应数量的面包屑项。这些功能的面包屑项目可以是任何反应组件,而只有道具才有意义。在这种情况下,DummyItem组件由库导出。如果不再需要当前组件来表示任何面包屑项目,则每个函数都接受null以将面包屑项目重置为无。

常数

through area库使用的名称在breadcrumbsThroughArea变量中定义 。

包含方位键的道具名称在中定义 breadcrumbsBearingKey

import { breadcrumbsThroughArea } from 'react-breadcrumbs-dynamic'
import { breadcrumbsBearingKey } from 'react-breadcrumbs-dynamic'

  

使用react-breadcrumbs-dynamic的更多相关文章

  1. [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 ...

  2. React笔记

    React JS Tutorials for Beginners - 1 - Getting Started https://www.youtube.com/watch?v=-AbaV3nrw6E&a ...

  3. Extjs5.0中的新特性

    We are excited that Ext JS 5 is now available! Ext JS 5 introduces many new and exciting improvement ...

  4. 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, ...

  5. [转] 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 ...

  6. React和动态网站接口的经济学

    来自: React and the economics of dynamic web interfaces 自从2000开始我就一直在做web开发,曾见过很多以各种库和框架的起起落落,这些库和框架作为 ...

  7. React配合Webpack实现代码分割与异步加载

    这是Webpack+React系列配置过程记录的第四篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  8. React服务器端渲染值Next.js

    昨天leader给分配了新任务,让熟悉一下ssr,刚开始有点懵,啥玩意?百度了一下,不就是服务器端渲染(server side render,简称: ssr). ssr简介 服务端渲染一个很常见的场景 ...

  9. 记React+.NetCore API实现动态列导出

    1.效果演示 2.用到的第三方类库 前端:React,Dva,Antd 后端:ASP.NET CORE,System.Linq.Dynamic.Core,EPPlus.Core 3.基本思路 第一:E ...

  10. react源码总览(翻译)

    用react也有段时间了, 是时候看看人家源码了. 看源码之前看到官方文档 有这么篇文章介绍其代码结构了, 为了看源码能顺利些, 遂决定将其翻译来看看, 小弟英语也是半瓢水, 好多单词得查词典, 不当 ...

随机推荐

  1. WeihanLi.Npoi 近期更新

    WeihanLi.Npoi 近期更新 Intro 最近对我的 NPOI 扩展做了一些改变,一方面提高性能,一方面修复bug,增加一些新的功能来让它更加好用,前几天发布了 1.5.0 版本,下面来介绍一 ...

  2. 原生JS实现集合结构

    1. 前言 集合是由一组无序且唯一(即不能重复)的项组成的.你可以把集合想象成一个既没有重复元素,也没有顺序概念的数组.在ES6中已经内置了集合这一数据结构--Set.接下来,我们就用原生JS来实现这 ...

  3. CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths——dsu on tree

    题目描述 一棵根为1 的树,每条边上有一个字符(a-v共22种). 一条简单路径被称为Dokhtar-kosh当且仅当路径上的字符经过重新排序后可以变成一个回文串. 求每个子树中最长的Dokhtar- ...

  4. FastDFS图片服务器单机安装步骤

    前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDFS组件中单机安装流程. 单机版架构图 以下为单机FastDFS安装步骤 一.环境准备 CentOS 7.X libfastcomm ...

  5. 深入理解java多态没有烤山药的存在,java就不香了吗?

    目录 1. 从吃烤山药重新认识多态 2. 多态前提条件[重点] 3. 多态的体现 4. 多态动态绑定与静态绑定 5. 多态特性的虚方法(virtual) 7. 向上转型 8. 向下转型 9. 向上向下 ...

  6. Flink入门(一)——Apache Flink介绍

    Apache Flink是什么? ​ 在当代数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效的处理,成为当下大多数公司所面临的问题.随着雅虎对hadoop的 ...

  7. jwt 实践应用以及特殊案例思考

    JSON Web Token 是 rfc7519 出的一份标准,使用 JSON 来传递数据,用于判定用户是否登录状态. jwt 之前,使用 session 来做用户认证. 以下代码均使用 javasc ...

  8. pat 1015 Reversible Primes(20 分)

    1015 Reversible Primes(20 分) A reversible prime in any number system is a prime whose "reverse& ...

  9. nyoj 599-奋斗的小蜗牛 (double ceil(); (temp - 1) / 5)

    599-奋斗的小蜗牛 内存限制:64MB 时间限制:1000ms 特判: No 通过数:0 提交数:96 难度:1 题目描述: 传说中能站在金字塔顶的只有两种动物,一种是鹰,一种是蜗牛.一只小蜗牛听了 ...

  10. 浅谈Node中的模块化

    关于这篇文章早在去年年初的时候我就想写一片关于模块化的文章,但是推到现在才来完成也有很多好处,巩固之前对Node的理解.毕竟在我目前的项目中还没有一款项目是用到了Node开发,所以导致我对Node的一 ...