javascript - React 不渲染第二张地图
问题描述
我正在尝试在地图功能中制作第二张地图。它显示了我的 console.log,但没有渲染任何东西。
这是我的对象:
const sidebarItems = [
{
icon: DashboardIcon,
name: 'DASHBOARD',
path: '/dashboard',
},
{
icon: TaskManagementIcon,
name: 'TASK MANAGEMENT',
path: '/task-management',
subpages: [
{
icon: TaskManagementIcon,
name: 'BOARD VIEW',
path: 'task-management/board',
},
{
icon: TaskManagementIcon,
name: 'LIST VIEW',
path: 'task-management/list',
},
],
}
];
然后这是我的反应组件:
function Sidebar({ items, location }) {
return (
<div className="app-sidebar">
<div className="app-sidebar-items">
{items.map(item => {
const path = `/app${item.path}`;
if (path === location.pathname) {
if (typeof item.subpages !== 'undefined') {
item.subpages.map(i => {
return <p>Foo</p>
});
}
}
return <p>Bar</p>
})}
</div>
</div>
);
}
上面的代码总是显示“Bar”文本。奇怪的是,如果我执行 console.log(i),它会显示子项......为什么它不起作用?
谢谢 :)
解决方案
You forgot to return
the subpages map. Without that return, the function keeps executing until it gets to return <p>Bar</p>
, so that's all you'll ever see.
JSX is just pure javascript with some syntax sugar. Rendering JSX only does anything if it's returned.
items.map(item => {
const path = `/app${item.path}`;
if (path === location.pathname) {
if (typeof item.subpages !== 'undefined') {
return item.subpages.map(i => {
// ^ added
return <p>Foo</p>
});
}
}
return <p>Bar</p>
})
推荐阅读
- python - 使用 matplotlib 制作 3D 移动散点图
- regex - 正则表达式字符串查找两个字符串并删除文件中的其余文本,包括不包含字符串的行
- css - select - 如何更改所选选项背景的颜色?
- django - 动态 Wagtail bgcolor 模板标签
- c# - 将两个数据表与公共列结合起来c#
- android - Android Firebase - 本地缓存数据
- tensorflow-lite - 如何让 Kirin 990 的 NPU 在 TensorFlow Lite 上运行?
- wordpress - 使用 ACF 更新/创建自定义帖子类型后在 Wordpress 中调用函数
- php - 在 Laravel 宏中使用函数
- proxy - Envoy - 重写主机名,保留通配符子域