考虑到这个对象:
lst socials = {
foo: 'http://foo'
}
我希望在JSX中循环遍历它。这样可以实现:
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>
}
但这并不意味着(社交未定义):
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>
}
在第二个例子中,为什么
social
未定义?我认为内部括号存在作用域问题,但我没有成功修复它。我可以使用对象键和此帖子中的方式执行
forEach
,但这与我的工作示例几乎没有区别。明确一点 - 我已经让它工作了,我只是希望更清楚地了解我第二个示例中的作用域问题(或语法错误,如果有的话)。
for
循环用{}
包围起来并尝试一下。虽然这样做可能有效,但通常使用.map()
数组方法可以实现相同的结果。 - Diego Cardosomap
可以正常工作。 - cyberwombat