瞬间JS-isAfter返回.isAfter不是函数吗?

时间:2019-03-14 12:07:31

标签: javascript reactjs momentjs

我的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;
        })
    );
};

2 个答案:

答案 0 :(得分:3)

date变量不是moment对象,因为您在此处使用了format

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

您的date变量只是一个字符串

答案 1 :(得分:1)

Moment().format()将返回一个字符串。字符串不会响应isAfter()

您需要将格式化日期分配给另一个变量,或者仅在希望显示它的位置格式化它:

const date = Moment(datum, 'DD/MM/YYYY');
const now = Moment();

return date.isAfter(now) ? ( // <-- this now works 
  ...