我有一系列反应组件,我试图按特定顺序渲染.像这样的东西:
render: function() {
var items = stock.map(function(item) {
return <NewLI data={item} key={item.id}/>
}
return <ul>{items}</ul>
}
Run Code Online (Sandbox Code Playgroud)
我的问题是React没有以原始数组的顺序返回li(实际组件比单个组件更复杂li,但是它被正确地包装在a中div).
所以,如果打印id键items,我得到这个:
items.forEach(function(a) { console.log(a.id) })
> 1
> 2
> 3
> 4
Run Code Online (Sandbox Code Playgroud)
但我的React渲染看起来像这样:
<ul>
<li...>2</li>
<li...>3</li>
<li...>4</li>
<li...>1</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这是预期的行为吗?有没有办法保证订单?
这不是预期的行为.React总是按元素的顺序呈现数组.
如果存在具有冲突key值的项目,则仅渲染最新元素,但这不是这里的情况,因为渲染了所有四个元素.
有可能是.map()返回对象而不是另一个数组的自定义函数吗?对象将以密钥迭代顺序呈现,这不一定保证跨浏览器一致.
| 归档时间: |
|
| 查看次数: |
2986 次 |
| 最近记录: |