arrays - 我可以保证 React 组件数组的渲染顺序吗?

标签 arrays reactjs

我有一组 react 组件,我试图按特定顺序渲染。像这样的事情:

render: function() {
  var items = stock.map(function(item) {
    return <NewLI data={item} key={item.id}/>
  }
  return <ul>{items}</ul>
}

我的问题是 React 没有按照原始数组的顺序返回 li(实际组件比单个 li 更复杂,但它被正确地包装在 div 中)。

因此,如果打印 itemsid 键,我会得到:

items.forEach(function(a) { console.log(a.id) })
> 1
> 2
> 3
> 4

但是我的 React 渲染看起来像这样:

<ul>
  <li...>2</li>
  <li...>3</li>
  <li...>4</li>
  <li...>1</li>
</ul>

这是预期的行为吗?有办法保证订单吗?

最佳答案

这不是预期的行为。 React 总是按照元素的顺序渲染数组。

如果存在 key 值冲突的项目,则只会呈现最新的元素,但情况与此处的情况不同,因为所有四个元素都会呈现。

是否有可能是一个自定义 .map() 函数返回一个对象,而不是另一个数组?对象将按键迭代顺序呈现,这不一定保证在浏览器之间保持一致。

关于arrays - 我可以保证 React 组件数组的渲染顺序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32321062/

相关文章:

arrays - C中的String和Null终止字符数组在字面上有什么区别吗

c - 指向指针数组的指针,其中每个指针都指向数组

c - 从用户获取多个整数作为输入

javascript - 如何在 ES6 中使用 React 编写交互式 d3 组件?

javascript - 更新 redux store 中的嵌套数据

reactjs - 使用 React 和 TS 将 PageProps 从 Gatsby 和 Parent 传递到功能组件返回未定义

c++ - 将数组的大小设置为从另一个常量除法得出的 const 的值

javascript - 将字符串切片并将每个片段存储在新数组中

javascript - 如何在每毫秒滴答的 onTick 事件中设置状态

javascript - 页面未重定向到更新的 URL