【发布时间】:2017-02-12 02:26:00
【问题描述】:
给定这个对象:
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 并像这个post 那样做,但这与我的工作示例没有太大不同。
说清楚 - 我已经成功了,我只是希望在我的第二个示例中更清楚地了解范围问题(或语法错误,如果有的话)。
【问题讨论】:
-
用
{}包围你的for循环并尝试。虽然它可能会起作用,但通常所做的是使用.map()数组方法来获得相同的结果。 -
@DiegoCardoso - 不行。当我尝试时,这会产生语法错误。这很奇怪,因为我认为括号中的东西可以是任何 JS,但它不喜欢 for 循环。在相同的括号中使用
map有效。
标签: javascript reactjs jsx