私はreactjsにかなり新しいです - この例では、jsonデータをループしています - メニュー - サブメニューネストで。reactjsメニュー - ネストされたデータを持つ条件演算子 - アクティブな状態を設定する
はとても基本的にメニューJSONはこの
{
"title": "Dienstleistungen",
"link": "/de/dienstleistungen",
"children" : [
]
},
{
"title": "Beliebte Projekte",
"link": "/de/beliebte-projekte",
"children" : [
{
"title" : "Bundle1",
"link" : "/de/beliebte-projekte/bundle1"
},
{
"title" : "Bundle2",
"link" : "/de/beliebte-projekte/bundle2"
}
]
}
のようなものが、今私の問題は、アクティブ状態のための論理であるに見えます - 現在、親レベルから、これは正常に動作します - ので、現在のページがある場合/デ/ dienstleistungen - 現在の状態は "item.link === activeLink"です。
今私は、可能な場合は、この
item.linkのようなので、何か===アクティブリンクの子供たちへのリンクをキャッチするために、ここでより多くのロジックを追加したいとします|| (item.children.inArray(アクティブリンク))
//コード
{
lang.menu.map(function (item, index) {
return (
<li key={index} className={(item.children.length > 0 ? 'has-dropdown' : '')}>
<Link to={item.link} className='headerbar-link-nav'>{item.title}</Link>
{
item.link === activeLink
? <div className='main-nav active' /> : null
}
{
item.children.length > 0
? <ul className='dropdown'>
{item.children.map(subPage => {
return (<li key={subPage.title}>
<Link to={subPage.link}>{subPage.title}</Link>
</li>
)
})}
</ul>
: null
}
</li>
)
})
}
私はこの解決策を作ってみました。
const inSubPages = function (obj, activeLink) {
for (var k in obj) {
if (!obj.hasOwnProperty(k)) continue
if (obj[k].link === activeLink) {
return true
}
}
return false
}
と三元あなたを交換 - そしてI最初の部分が親リンクではなく失敗するので、子配列内で狩りをしたいです。 –
私はこれを思いついた - const inSubPages = function(obj、activeLink){ for(var k in obj){ IF(!obj.hasOwnProperty(K)) IF(OBJ [K] .link ===アクティブリンク)を続ける{ trueを返す } } falseを返します } –
これで、その状態が正しくfalseになるようになりましたか? – zenwraight