【问题标题】:Return Moment array in JS在 JS 中返回 Moment 数组
【发布时间】:2021-10-21 21:27:51
【问题描述】:

将我的日期解析成数组后,我想暂时将其存储在UseState数组中。

  const [yearperiod, setYearPeriod ] = React.useState([moment("2021-09-09")])


  const startdate : any = (document.getElementById('startdate') as HTMLInputElement);
  const enddate : any = (document.getElementById('enddate') as HTMLInputElement);
  
  const dateStart = moment(startdate.value, "DD-MM-YYYY")
  const dateEnd = moment(enddate.value, "DD-MM-YYYY")
  const interim = dateStart.clone();
  const timeValues = [];

  while (dateEnd > interim || interim.format('MM') === dateEnd.format('MM')) {
    timeValues.push(interim.format('MM-YYYY'));
    interim.add(1,'month');
 }

  // ERROR
  setYearPeriod(timeValues)

但我有以下错误:

Argument of type 'string[]' is not assignable to parameter of type 'SetStateAction<Moment[]>'.

【问题讨论】:

  • 在将日期推送到timeValues 之前,尝试使用它们创建时刻对象

标签: reactjs typescript momentjs


【解决方案1】:
  const [yearperiod, setYearPeriod ] = React.useState([moment("2021-09-09")])

因此,因为您将初始状态设置为包含矩对象的数组,所以无论何时您想要更新状态,它都会期望相同的结构,如果您不指定类型,这就是 typescript 的工作方式。

你传递的是一个字符串数组,但这应该是一个时刻对象数组,因为初始状态更新。

const momentItems = timeValues.map(item => moment(item)); 


setYearPeriod(momentItems)

【讨论】:

  • 感谢您的回答,我知道这种情况。我的问题更多是关于如何返回 Moment Array
  • 我不确定这是否可行,但我已经更新了我的代码@LikiTiki
猜你喜欢
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
相关资源
最近更新 更多