首页 > 解决方案 > Moment JS - isAfter 返回 .isAfter 不是函数吗?

问题描述

我的 React 组件内部有问题。我试图只显示未来或今天即将到来的数据。但我得到这个错误:

.isAfter 不是我使用格式时的功能。

没有它可以工作的格式,但我得到错误的数据。

简而言之:我只想显示即将发生的事件。

我的代码:

showData = () => {
    const { checks } = this.props;

    return (
        this.state.opendagen.length > 0 &&
        this.state.opendagen.map((value, index) => {
            const { opendag_data: datum } = value;
            const date = Moment(datum, 'DD/MM/YYYY').format('DD/M/YYYY');
            const now = Moment().format('DD/M/YYYY');

            console.log('vandaag:', now, 'data:', date);

            const concatData = [
                ...(value.opendag_department + ' - '),
                ...(value.opendag_data + ' - '),
                ...value.opendag_link,
            ];

            return date.isAfter(now) ? (
                <tr key={index}>
                    <td data-th="Datum">{value.opendag_data}</td>
                    <td data-th="Opleiding">
                        <strong>{value.opendag_department}</strong>
                    </td>
                    <td data-th="Link">
                        <a
                            target="_blank"
                            rel="noopener noreferrer"
                            href={value.opendag_link}>
                            bekijk website
                        </a>
                    </td>
                    <td data-th="Select">
                        <CheckBox
                            thisClassName="data__checkbox checkbox__input"
                            value={concatData.join('')}
                            id={'string_' + index}
                            onChange={checks}
                        />
                    </td>
                </tr>
            ) : null;
        })
    );
};

标签: javascriptreactjsmomentjs

解决方案


date变量不是moment对象,因为您在这里format使用过

const date = Moment(datum, 'DD/MM/YYYY').format('DD/M/YYYY');

moment 对象上的 format 方法返回一个格式化的字符串,所以你的date变量只是一个字符串。


推荐阅读