reactjs React-Native为什么会出现“不可迭代”

xwbd5t1u  于 2023-04-05  发布在  React
关注(0)|答案(1)|浏览(154)

React / State / Arrays
为什么这里会出现“不可迭代”

const myVar = {
    '2022-11-22': { selected: true, textColor: 'blue', activeOpacity: 0}
  };
 
  const [myMarkedDates, setMarkedDates] = useState(myVar);
 
  const newVar = {
    '2022-12-17': {selected: true, textColor: 'red', activeOpacity: 0}
  };
  
  const newVars = [newVar, ...myMarkedDates];
 
  setMarkedDates(newVars);
7y4bm7vi

7y4bm7vi1#

你在这里混合了一个数组和一个对象。使用...myMarkedDates的扩展表示法返回对象的属性:

'2022-11-22': { selected: true, textColor: 'blue', activeOpacity: 0}

这可以是另一个对象的属性,但不是数组中的元素。
这对你来说是一个有效的语法:

const newVars = [newVar, {...myVar}];

这里newVars将是一个包含对象newVarmyVar的数组:

[
  {
    '2022-12-17': { selected: true, textColor: 'red', activeOpacity: 0 }
  },
  {
    '2022-11-22': { selected: true, textColor: 'blue', activeOpacity: 0 }
  }
]

根据您尝试实现的目标,可能首选以下操作:

const newVars = {...newVar, ...myVar};

在上面的代码中,newVars将是一个具有newVarmyVar组合属性的对象:

{
  '2022-12-17': { selected: true, textColor: 'red', activeOpacity: 0 },
  '2022-11-22': { selected: true, textColor: 'blue', activeOpacity: 0 }
}

相关问题