2017-02-09 4 views
2

Когда я пытаюсь использовать дату из Moment.js в конструкторе, componentWillMount или componentDidMount, я получаю ошибку:Uncaught TypeError: _moment2.default.date не является функцией в React приложение

Uncaught TypeError: _moment2.default.date is not a function 

Я не использую Webpack или какой-либо конкретный инструмент построения вне npm. Вот мой соответствующий код:

import React from 'react'; 
import Moment from 'moment'; 

export default class Date extends React.Component { 
    constructor() { 
    super(); 
    this.state = { day: '', 
        month: '', 
        year: '', 
        weekday: '' 
       }; 
    } 

    componentDidMount() { 
    this.setDate(); 
    } 

    setDate() { 
    this.state.day = Moment.date(); 
    this.state.month = Moment.format('MMM'); 
    this.state.year = Moment.year(); 
    this.state.weekday = Moment.format('dddd'); 
    } 

Является ли это потому, что момент не полностью загружена, когда компонент оказывается, или что-то еще? Как я могу исправить это?

Когда я вызываю Moment только в функции render(), я не получаю эту ошибку. Но мне нужна информация о дате в состоянии, чтобы я мог обновлять другие компоненты приложения на основе даты.

ответ

2

Way вы настраиваете состояние не является правильным, и использовать момент, как это: Moment()., попробуйте следующее:

setDate() { 
     this.setState({ 
      day : Moment().date(), 
      month : Moment().format('MMM'), 
      year : Moment().year(), 
      weekday : Moment().format('dddd') 
     }); 
    } 
+0

Doh. Спасибо. Головы, вы использовали '=' вместо ':' в этом ответе. :) –