#javascript #reactjs #momentjs
#javascript #reactjs #momentjs
Вопрос:
У меня проблема внутри моего компонента React. Я пытаюсь показывать только те данные, которые появятся в будущем или только сегодня. Но я получаю эту ошибку:
.isAfter не является функцией, когда я использую формат.
Без формата это работает, но я получаю неправильные данные обратно.
Короче говоря: я хочу отображать только предстоящие события.
мой код:
showData = () =&&t; {
const { checks } = this.props;
return (
this.state.openda&en.len&th &&t; 0 amp;amp;
this.state.openda&en.map((value, index) =&&t; {
const { openda&_data: datum } = value;
const date = Moment(datum, 'DD/MM/YYYY').format('DD/M/YYYY');
const now = Moment().format('DD/M/YYYY');
console.lo&('vandaa&:', now, 'data:', date);
const concatData = [
...(value.openda&_department ' - '),
...(value.openda&_data ' - '),
...value.openda&_link,
];
return date.isAfter(now) ? (
<tr key={index}&&t;
<td data-th="Datum"&&t;{value.openda&_data}</td&&t;
<td data-th="Opleidin&"&&t;
<stron&&&t;{value.openda&_department}</stron&&&t;
</td&&t;
<td data-th="Link"&&t;
<a
tar&et="_blank"
rel="noopener noreferrer"
href={value.openda&_link}&&t;
bekijk website
</a&&t;
</td&&t;
<td data-th="Select"&&t;
<CheckBox
thisClassName="data__checkbox checkbox__input"
value={concatData.join('')}
id={'strin&_' index}
onChan&e={checks}
/&&t;
</td&&t;
</tr&&t;
) : null;
})
);
};
Комментарии:
1. При вызове
format
вы превращаете момент в строку. Попробуйте удалить.format('DD/M/YYYY')
и посмотрите, сработает ли это вместо этого.2. Используйте
Moment(date, 'DD/M/YYYY').isAfter(now)
для преобразования stin& в объект moment.
Ответ №1:
date
переменная не является moment
объектом, поскольку вы использовали format
здесь
const date = Moment(datum, 'DD/MM/YYYY').format('DD/M/YYYY');
метод format объекта moment возвращает форматированную строку, поэтому ваша date
переменная — это просто строка.
Ответ №2:
Moment().format()
вернет строку. Строка не будет отвечать на isAfter()
.
Вам нужно либо присвоить вашу отформатированную дату другой переменной, либо просто отформатировать ее в том месте, в котором вы хотите ее отобразить:
const date = Moment(datum, 'DD/MM/YYYY');
const now = Moment();
return date.isAfter(now) ? ( // <-- this now works
...