Манипулирование датами моментов в реагировать / JavaScript - PullRequest
0 голосов
/ 16 ноября 2018

Автоматическое заполнение других полей даты на основе одного первого.

1. У меня есть массив из 12 индексов "listOfPaysIndexes", я использую этот массив, чтобы перебирать ее и отображать 12 полей DateInput.

2. Вы можете нажать на каждое из этих полей и выбрать Дата.

3. Когда вы выбираете дату в первом DateInput, все остальные DateInputs должны автоматически заполняться следующим месяцем.

Текущее поведение: когда вы выбираете firstDate, вы получаете ту же дату во всех других полях.

Ожидаемое поведение: , что при выборе firstDate каждый следующий поданный файл автоматически получает следующую дату монтирования.

  • Проблема в том, когда я выбираю 6 ноября 2018 Я получаю в первом поле 6 ноября, а во всех остальных полях я получаю 6 декабря 2018 года.

  • Но следует продолжать переключаться на следующие месяцы и показывать даты следующих месяцев.

  • Я думаю, что эта строка кода является проблемой: вернуть firstDate.add (1, 'months'). Format ('MM / DD / YYYY')

Пример кода:

fillingDatesArray = (data, values, periodType, periodLength) => {
  let listOfPaysIndexes = []
  listOfPaysIndexes = This array have 12 indexes

if (periodType === 'monthly') {
  values.ending_period_monthly = listOfPaysIndexes.map(value => {
    let firstDate = new Date(data.value)
    return firstDate.add(1, 'months').format('MM/DD/YYYY')
  })
}

Вот скриншот этого DateInputs: enter image description here

1 Ответ

0 голосов
/ 16 ноября 2018

Попробуйте клонировать свою дату в map, чтобы каждое значение не совпадало с той же moment object:

let firstDate = moment(data.value)
...
return firstDate.clone().add(1, 'months').format('MM/DD/YYYY')

вместо:

return firstDate.add(1, 'months').format('MM/DD/YYYY')
...