TypeError: d [("get" + method)] не является функцией в reactjs при чтении данных из firebase - PullRequest
0 голосов
/ 29 апреля 2020

Когда я нажимаю кнопку недели, появляется сообщение об ошибке:

TypeError: d [("get" + method)] не является функцией (анонимной функцией) node_modules / date-arithmetic / index . js: 281 278 | }) (Метод); 279 | 280 | функция возврата (d, val) {

281 | if (val === undefined) | ^ 282 | return d'get '+ метод 283 | 284 | var dateOut = new Date (d)

Обычно он должен отображать данные в соответствии с их временем начала и окончания.

enter image description here enter image description here

getReservations = () => this.db.ref('reservations');

import { Calendar, momentLocalizer } from 'react-big-calendar';

const localizer = momentLocalizer(moment);
const DragAndDropCalendar = withDragAndDrop(Calendar);

class CalFormBase extends Component {
    constructor(props) {
        super(props);
        this.state = {
            calendarInitialState,
            events: [
                {
                    allDay: true,
                    start: Date(),
                    end: Date(),
                }
            ]
        };
    }

componentDidMount() {
            this.props.firebase.getReservations().on('value', snapshot => {
            this.setState({
                events: snapshot.val(),
            });
        });
    }


render() {
        if (this.state.events) {
            return (
                <div className={'row'}>
                    <MuiThemeProvider>
                        <div className={'col-2'}>
                            Equipments:
                            <FloatingActionButton
                                mini={true}
                                className={'m-2'}
                                onClick={() => this.handleEquipments()}
                            >
                                <ContentAdd />
                            </FloatingActionButton>
                            <Sidebar
                                events={this.state.equipments}
                                onClickEvent={this.handleEquipments}
                            />
                        </div>
                        <div style={{ height: 500 }} className={'col-8'}>
                            <DragAndDropCalendar
                                events={this.state.events}
                                onEventDrop={this.moveEvent}
                                resizable
                                localizer={localizer}
                                onEventResize={this.resizeEvent}
                                defaultView="month"
                                defaultDate={new Date()}
                                onSelectEvent={this.selectEvent}
                                min={minTime}
                                max={maxTime}
                                backend={false}
                            />                              
                        </div>                          
                    </MuiThemeProvider>
                </div>
            );
        }
    }

1 Ответ

0 голосов
/ 29 апреля 2020

Ваша проблема не связана с самой firebase, но способ передачи данных в библиотеку календаря, временная метка Firebase отличается от javascript объектов даты; Я бы предложил попробовать что-то вроде этого:

componentDidMount() {
            this.props.firebase.getReservations().on('value', snapshot => {
            const data = snapshot.val()
            data['start'] = data['start'].toDate()
            data['end'] = data['end'].toDate()
            this.setState({
                events: snapshot.val(),
            });
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...