ReactJS - Как использовать DatePicker из пользовательского интерфейса материала с Firestore? Отметка времени в формате даты - PullRequest
0 голосов
/ 16 июня 2019

Дата записывается нормально в базе данных, но когда я показываю, DatePicker не перенастраивает дату из базы данных, потому что с приходит как отметка времени (секунды и наносекунды).

  <DatePicker
    margin="normal"
    label="Data do pedido"
    fullWidth
    value={
     form.datapedido   
    }
    onChange={handleChangeData}
      variant="filled"
      style={{ marginTop: 0 }}
  />

Если я изменюзначение DatePicker, чтобы сделать Timestamp to Date, тогда я не могу сохранить дату, потому что код будет пытаться изменить Date на Date.

Если я оставлю этот путь, то я могу сохранить дату, но когда я загружу дату изЯ получаю «Неверную дату» от DatePicker

1 Ответ

0 голосов
/ 16 июня 2019

Firestore отметка времени включает метод toDate, который вы можете использовать для преобразования вашей даты в объект Date даты в javascript, при условии, что ваш компонент ожидает объект Date.

Итак, предположим, form.datapedido является Timestamp объектом:

<DatePicker
    margin="normal"
    label="Data do pedido"
    fullWidth
    value={
     form.datapedido.toDate()
    }
    onChange={handleChangeData}
      variant="filled"
      style={{ marginTop: 0 }}
  />

Вероятно, вы найдете проблему, когда захотите обновить свой сборщик (после загрузки исходного значения).

Это может быть полезно:

const formatDate = (date) => isNil(date.seconds)
   ? date // Already a javascript date object
   : date.toDate()

<DatePicker
    margin="normal"
    label="Data do pedido"
    fullWidth
    value={
     formatDate(form.datapedido)
    }
    onChange={handleChangeData}
      variant="filled"
      style={{ marginTop: 0 }}
  />

Это может сработать или дать вам отправную точку, я не знаком с DatePicker компонентом

...