【问题标题】:Anonymous array workaround/alernative?匿名数组解决方法/替代方案?
【发布时间】:2018-11-16 16:25:46
【问题描述】:

我正在尝试创建一个“匿名数组”,但似乎没有这样的东西,是否有一些技术可以让我从 G: 对象中省略 array_of_objects: 属性但保持其他所有内容相同?

【问题讨论】:

  • 不要发代码图片;你的图片中没有一个数组,但是有一些对象文字
  • FWIW,array_of_objects 实际上是一个对象,而不是一个数组。
  • var array_of_objects = {}; 更改为var cells = [];return {cells: {array_of_objects}}; 更改为return {cells}; 甚至return cells; ?
  • 如果我这样做,我会得到:对象作为 React 子级无效(找到:带有键 {id} 的对象)。如果您打算渲染一组子项,请改用数组。
  • 该错误意味着您正在尝试将您创建的每个或一个对象 ({id: x}) 渲染为反应组件。您不应该这样做并更改呈现这些值的方式。由于您没有显示如何呈现值,因此我们无话可说。这个错误已经很明显了。简而言之:如果我有var value = {id: 0};,我就不能做<span>{value}</span>。如果我想呈现属性id 的值,我必须访问该属性:<span>{value.id}</span>

标签: javascript reactjs


【解决方案1】:

自从ECMAScript 2015 (or ES6),这个:

{ array_of_objects }

被认为与

相同
{ "array_of_objects": array_of_objects }

它正在创建一个具有该名称的属性。如果你不想要这个属性,你需要做的就是删除花括号:

return { cells: array_of_objects };

【讨论】:

  • 这正是我几个小时前尝试的方法,但出现以下错误:对象作为 React 子项无效(找到:带有键 {id} 的对象)。如果您打算渲染一组子项,请改用数组。我以为我只是犯了一个明显的错误,有没有其他方法可以删除同名的属性?
  • 你也应该按照@Felix的建议来解决这个问题
【解决方案2】:

这是解决方案(如果我理解你的问题是正确的)

setup: function() {
  var cells = {}; // Better to use [], but nm
  for(var x = 0; x< 121; x++) {
    cells[x] = {id:x}
  }
  return { cells: cells }
}

【讨论】:

  • 与其他答案相同,我收到错误消息:对象作为 React 子项无效(找到:带有键 {id} 的对象)。如果您打算渲染一组子项,请改用数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-29
  • 2011-04-13
  • 2016-10-24
  • 2021-05-18
  • 1970-01-01
  • 2016-04-30
  • 2017-08-27
相关资源
最近更新 更多