博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[译]基于 React Router 4 的可复用 Layout 组件
阅读量:7166 次
发布时间:2019-06-29

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

本文翻译自:

在 应用中,希望在每个路由上呈现一些默认的组件,比如页眉和页脚:

Page Header
{content that changes}
Page Footer

在最新版本的 React Router V4 中可以很容易实现这一点,通过为特定的用例创建子布局。

创建默认布局

我们把每个页面都使用的布局作为默认布局。当页面路由和地址栏匹配的时候,React router 会调用 render 属性的函数:

// 调用组件的常规方式
// 使用 render 属性可以最组件做一些自定义操作
} />

这是非常有用的,因为我们可以把这些组件放到 <Route /> 中,然后控制哪些组件应该被渲染,同时把 Route 的属性传递给子组件:

const DefaultLayout = ({component: Component, ...rest}) => {  return (    
(
Header
Footer
)} /> )};

rest 参数包含了需要传递给 DefaultLayout 的除了 component 以外的所有属性,所以我们可以把这些属性从 Route 转发到底层组件。

通过向 Route 组件提供 render 属性,我们可以控制 component 属性的渲染。在这种情况下,我们将其包含在包含页眉和页脚的 HTML 中,但这可能只是把其他组件做了简单的分组。matchPropsRoute 渲染时的另一个属性。

一个非常重要的注意点是把 component 组件重新命名为 Component,因为它会影响 JSX 如何转换我们的代码:

// 转换为React.createElement("component", null); // 不是我们需要的
// 转换为React.createElement(Component, null); // 现在,这是一个 React 组件

阅读 facebook 官方文档 获取更多信息。

扩展默认布局

我们的默认布局已经包含了在每个页面上的需要共享的组件,可能有时候我们还要为某个视图添加某些特定组件,例如博客的帖子。解决这个问题的一个方法是创建 DefaultLayout 然后只为那些新页面添加特定组件:

const PostLayout = ({component: Component, ...rest}) => {  return (    
(
)} /> );};

唯一的区别是将函数传递给 component 属性而不是 render 属性。您可以根据需要自由扩展布局。

仅此而已

短小精悍。

React Router 的新版本专注于使用 React 组件模型,而这些组件可以非常简单的组合在一起。

查看这个 ,可以看看对于使用不同的默认布局的讨论。

正在进行中。。。

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

你可能感兴趣的文章
依图挺入AI芯片赛道,新产品“求索”视觉推理能力超越英伟达
查看>>
什么是“容器技术”?为什么它对物联网和云计算如此重要?
查看>>
教你如何实现 Android TextView 文字轮播效果
查看>>
UITableView
查看>>
ContextMenu和OptionsMenu主要有以下区别
查看>>
iptables详解
查看>>
Mysql 分区介绍(九) —— 分区管理
查看>>
exchange2010---将邮箱置于保留挂起中---Retention Hold
查看>>
Vert.x系列(四)-- HAManager源码分析
查看>>
Java 8 中的 Streams API 详解
查看>>
搭建安全的Web服务器
查看>>
初学者
查看>>
小叙安装CentOS 6.5
查看>>
LVM 扩展/减缩/镜像 【有图有真相】
查看>>
Live Migrate 操作 - 每天5分钟玩转 OpenStack(42)
查看>>
我的友情链接
查看>>
免费为网站加上HTTPS
查看>>
银河麒麟操作系统上配置Bond(二)使用ifenslave方式
查看>>
Python高阶函数
查看>>
Xen虚拟化
查看>>