javascript - React 中的路径名条件渲染
问题描述
如何有条件地将组件添加到某些渲染pathname
?
使用const pathname = this.props.location.pathname
I 识别当前pathname
然后我要使用的get
页面slugs
const specialPages = get(this.props, 'data.allContentfulSpecialPages.edges')
然后我组织返回data
的
const special = specialPages.map(({ node: page })=> (
`/parent/${page.slug}`
))
这会将页面返回slugs
为
["/parent/page1", "/parent/page2", "/parent/page3", "/parent/page4", "/parent/page5", "/parent/page6"]
现在一切似乎都很好,但是当我尝试添加时
let PageHeader;
if (pathname !== special) {
PageHeader =
<Header/>;
} else {
PageHeader = null
}
它不会删除中标识的<Header/>
forpathname
special
我没有正确定义每个array
?
编辑 - 我刚刚注意到这个问题,但不确定修复。
const special
正在返回/parent/page1/parent/page2/parent/page3/parent/page4/parent/page5/parent/page6
添加时console.log(special)
我收到
0:"/parent/page1"
1:"/parent/page2"
2:"/parent/page3"
3:"/parent/page4"
4:"/parent/page5"
5:"/parent/page6"
length:6
__proto__: Array(0)
所以我相信我需要map
这些不同的。
解决方案
如果我理解正确,您希望根据路径名有条件地将组件添加到渲染中。我看到的一个常见模式是使用 and 运算符来检查您要检查的条件以及在需要时渲染的组件。像这样的东西。
{{ pathname !== special && <Header/> }}
如果条件不成立,则不会显示任何内容,如果条件成立,则会显示 Header 组件。
推荐阅读
- python - 在 Keras 中使用自定义顶层为 vgg16 生成热图
- ms-access - 访问 - 在一张图上绘制两个时间序列
- python - 为什么变量不会在打印行中相乘
- android - 深层链接打开应用程序的问题
- django - 获取好友列表时VK错误没有通过access_token
- matlab - 是什么让 MATLAB 对向量的运算如此之快?
- r - 如何根据R中的列名对条形图着色
- google-sheets - 使用平均功能可以在 Google 表格中向上或向下舍入吗?
- javascript - 如何测试用 NodeJS 构建的 Telegram 机器人?
- python - 如何将字典的键存储为pyspark中的列表