填充React Dropdown获取错误#31

时间:2018-07-24 05:39:16

标签: javascript reactjs ecmascript-6

我有一些Javascript定义为:

function range(start, end, step = start < end ? 1 : -1) {
  let array = [];

  if (step > 0) {
    for (let i = start; i <= end; i += step) array.push(i);
  } else {
    for (let i = start; i >= end; i += step) array.push(i);
  }
  return array;
}

function sum(array) {
  let total = 0;
  for (let value of array) {
    total += value;
  }
  return total;
}

console.log(range(1, 10))
// → [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(range(5, 2, -1));
// → [5, 4, 3, 2]
console.log(sum(range(1, 10)));
// → 55

这是通过populateOptions() { var statesMap = [{1: 10}, {2: 20}, {3: 30}]; return statesMap.map((option, index) => ( <option key={index} value={option}>{option}</option> )); } 函数调用的:

render()

当页面试图加载时,我会在控制台中看到它:

  

错误:最小化React错误#31;请访问https://reactjs.org/docs/error-decoder.html?invariant=31&args[]=object%20with%20keys%20%7B1%7D&args[]=获取完整的消息,或使用非最小化的dev环境获取完整的错误和其他有用的警告。       在e.exports(invariant.js:42)

2 个答案:

答案 0 :(得分:3)

您正在呈现的选项中的var i = 0; var j = 0; while (i < rawInfo[0].length && j < repInfo[0].length) { if (rawInfo[0][i].toString() == repInfo[0][j].toString()) { if (rawInfo[2][i].toString() == repInfo[2][j].toString()) { rawInfo[1][i]=repInfo[1][j]; i++; j++; } else if (rawInfo[2][i].toString() < repInfo[2][j].toString()) { i++; } else { j++; } } else if (rawInfo[0][i].toString() < repInfo[0][j].toString()) { i++; } else { j++; } } 是错误的选择选项。 您应该按如下所示修改statesMap和render函数。

object

答案 1 :(得分:0)

旁注

由于JSON不会解析具有key作为数字的值,因此始终希望它是字符串。

因此,如果您将key更改为字符串值

,则您的JSON仍然有效

示例

enter image description here

但是,keys不是数字,JSON会自动将其解析为字符串-

var statesMap = [{name: 10}, {name: 20}, {name: 30}];

因为key被认为是字符串,所以将像这样自动解析。

示例

enter image description here

我希望它清楚。