反应JS |根据标志显示或隐藏对象数组
ReactJS | Show or Hide Array of Objects based on flag
问题:
我想要做的是 hide/show 反应基于对象构造的 属性 动态构造的元素。更准确地说,让我们采用以下对象数组:
const Apps = [
{name: App1, permission: ViewApp1},
{name: App2, permission: ViewApp2},
{name: App3, permission: ViewApp3},
{name: App4 },
]
我想 map
通过它们,并为每个项目在我的导航栏中创建一个 nav-item
。
这里是jsx code
:
const ScreenModule = ({ apps = [], currentRoute }) => (
<Fragment>
{apps.map(app => (
<li
key={app.name}
title={app.name}
>
<a href={getUrlLink(app)}>
<span>{app.name}</span>
</a>
</li>
))}
</Fragment>
);
现在,通常当我想检查何时显示元素时,我会在以下实用函数中包装该 jsx 元素:
const AuthViewAdminManagement = ConditionalLoader(({ user }) =>
// user = The currently loggedIn user
userHasPermission(user, [
Role.ViewApp1 // My ConstantArray of Permissions to check against
])
);
这是针对静态元素的。 我的问题在于如何为我的动态构建的应用程序做完全相同的事情。
基本上,我试图找到一种方法来根据 name
或 permission
.[=19= 有条件地包装 li ]
另外,没有权限的App4
如何处理。如何 show/hide 地图中的那个。
我想过使用过滤器,过滤特定的权限或名称,但我卡住了。
我希望我说清楚了我的问题是什么。如果你能帮忙,那就太好了。谢谢!
我想这会对你有所帮助
const ScreenModule = ({ apps = [], currentRoute }) => (
<Fragment>
{apps.map(app => {
return (app.permission ?
<li
key={app.name}
title={app.name}
>
<a href={getUrlLink(app)}>
<span>{app.name}</span>
</a>
</li>:null)
})}
</Fragment>
);
您可以筛选:
const ScreenModule = ({ apps = [], currentRoute }) => (
<Fragment>
{apps.filter(app => app.permission).map(app => {
return <li
key={app.name}
title={app.name}
>
<a href={getUrlLink(app)}>
<span>{app.name}</span>
</a>
</li>
})}
</Fragment>
);
问题: 我想要做的是 hide/show 反应基于对象构造的 属性 动态构造的元素。更准确地说,让我们采用以下对象数组:
const Apps = [
{name: App1, permission: ViewApp1},
{name: App2, permission: ViewApp2},
{name: App3, permission: ViewApp3},
{name: App4 },
]
我想 map
通过它们,并为每个项目在我的导航栏中创建一个 nav-item
。
这里是jsx code
:
const ScreenModule = ({ apps = [], currentRoute }) => (
<Fragment>
{apps.map(app => (
<li
key={app.name}
title={app.name}
>
<a href={getUrlLink(app)}>
<span>{app.name}</span>
</a>
</li>
))}
</Fragment>
);
现在,通常当我想检查何时显示元素时,我会在以下实用函数中包装该 jsx 元素:
const AuthViewAdminManagement = ConditionalLoader(({ user }) =>
// user = The currently loggedIn user
userHasPermission(user, [
Role.ViewApp1 // My ConstantArray of Permissions to check against
])
);
这是针对静态元素的。 我的问题在于如何为我的动态构建的应用程序做完全相同的事情。
基本上,我试图找到一种方法来根据 name
或 permission
.[=19= 有条件地包装 li ]
另外,没有权限的App4
如何处理。如何 show/hide 地图中的那个。
我想过使用过滤器,过滤特定的权限或名称,但我卡住了。
我希望我说清楚了我的问题是什么。如果你能帮忙,那就太好了。谢谢!
我想这会对你有所帮助
const ScreenModule = ({ apps = [], currentRoute }) => (
<Fragment>
{apps.map(app => {
return (app.permission ?
<li
key={app.name}
title={app.name}
>
<a href={getUrlLink(app)}>
<span>{app.name}</span>
</a>
</li>:null)
})}
</Fragment>
);
您可以筛选:
const ScreenModule = ({ apps = [], currentRoute }) => (
<Fragment>
{apps.filter(app => app.permission).map(app => {
return <li
key={app.name}
title={app.name}
>
<a href={getUrlLink(app)}>
<span>{app.name}</span>
</a>
</li>
})}
</Fragment>
);