Чистый способ обработки момента (не определен) в REACT JS - PullRequest
1 голос
/ 14 июля 2020

В приложении REACT у меня есть поле type = "datetime-local", которое использует дату из java API, который имеет тип java .util.Date.

Для форматирования я использовал:

value={moment(
{ ...this.state.startDate[0] }["startTime"]
).format("YYYY-MM-DDTHH:mm")}

, когда startDate не определен, я получаю текущее время в поле. Мне не нужен контент, когда данные не определены (вместо отображения текущей метки времени)

Я провел небольшое исследование и обнаружил, что момент (undefined) такой же, как moment (), в отличие от moment (null).

Я пробовал использовать .isValid (), это также дает неверное логическое значение для undefined.

Я могу справиться с этим, выполнив проверку с помощью undefined и используя условный оператор ternany.

({typeof { { ...this.state.startDate[0] }["startTime"] === "undefined" ? [DO NOT USE MOMENT] : [USE MOMENT CODE]})

ЕСТЬ ЛИ ДРУГОЙ ЧИСТЫЙ СПОСОБ ДОСТИГНУТЬ ЭТОГО?

Ответы [ 2 ]

1 голос
/ 14 июля 2020

undefined является ложным значением, поэтому лучшим решением может быть просто проверка истинности времени начала.

{ ...this.state.startDate[0] }["startTime"] ? [DO NOT USE MOMENT] : [USE MOMENT CODE]

const badDate = undefined;

const d = badDate && moment(badDate);

console.log(d);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
0 голосов
/ 14 июля 2020

Вы можете использовать метод isValid () экземпляра моментной переменной, как показано в следующем фрагменте:

moment("not a real date").isValid();

Более подробную информацию можно найти здесь:

https://momentjs.com/docs/

...