dieses Objekt Gegeben:JSX für ... in Schleife
lst socials = {
foo: 'http://foo'
}
will ich durch sie in JSX Schleife. Dies funktioniert:
let socialLinks = []
let socialBar
for (let social in socials) {
socialLinks.push(<li>
<a alt={social} href={socials[social]}>{ social }</a>
</li>)
}
if (socialLinks) {
socialBar = <div className='align-bottom text-center'>
<ul className='list-inline social-list mb24'>
{socialLinks}
</ul>
</div>
}
Aber dies nicht (soziale undefined):
let socialBar
if (socials) {
socialBar = <div className='align-bottom text-center'>
<ul className='list-inline social-list mb24'>
for(let social in socials)
{<li>
<a alt={social} href={socials[social]}>{ social }</a> // social is undefined
</li>}
</ul>
</div>
}
Was ist der Grund social
im zweiten Beispiel nicht definiert ist? Ich nehme an, dass es ein Problem mit den inneren Klammern gibt, aber ich habe es nicht erfolgreich gelöst.
Ich kann eine forEach
mit Objektschlüssel tun und tun, wie in diesem post, aber das ist nicht viel anders als mein Arbeitsbeispiel.
Um klar zu sein - ich habe es funktioniert, möchte ich einfach auf das Problem Scoping (oder Syntaxfehler, wenn ja) in meinem zweiten Beispiel zu klären.
Umgeben Sie Ihre 'for' Schleife mit' {} 'und versuchen Sie es. Obwohl es funktionieren könnte, wird normalerweise die Array-Methode '.map()' verwendet, um das gleiche Ergebnis zu erzielen. –
@DiegoCardoso - nein gehen. Das führt zu einem Syntaxfehler, wenn ich es versuche. Das ist seltsam, da ich dachte, dass Dinge in Klammern JS sein könnten, aber keine For-Schleife mögen. Die Verwendung einer 'map' in den gleichen Klammern funktioniert. – cyberwombat