В приведенном ниже коде я вижу, что this.mBaseService
определен выше первого debugger
, но не ниже второго debugger
.
Кто-нибудь может объяснить, почему это так? Одна из теорий, которые у меня были, заключается в том, что React или Next.js могут внутренне очищать свойства.
import Link from 'next/link';
import React, { Component, Fragment } from 'react';
import ReactDropzone from 'react-dropzone';
import { Container, Row, Col, Button, Jumbotron, ListGroup, ListGroupItem } from 'reactstrap';
import DefaultHomeView from '../components/default-home-view';
import Page from '../components/page';
import EteeReport from '../components/etee-report';
import Layout from '../components/layout';
import { ServiceBaseService } from '../services/service-base/service-base.service';
export default class extends Page {
mBaseService = new ServiceBaseService();
constructor(props) {
super(props);
this.state = {
files: [],
};
console.log('it exists!', this.mBaseService);
debugger;
//this.mBaseService = new ServiceBaseService();
}
fHandleOnDrop = async files => {
debugger;
const oResponse = await this.mBaseService.fpPost('/reports', {
oDataToPost: JSON.stringify(files),
});
// TODO: if valid csv then parse and chart the data
this.setState({
files: this.state.files.concat(files),
});
};
fClearFiles = () => {
this.setState({
files: [],
});
};
render() {
return (
<Layout {...this.props} navmenu={false} container={false}>
{!this.state.files.length && (
<DefaultHomeView {...this.props} fHandleOnDrop={this.fHandleOnDrop} files={this.state.files} />
)}
{this.state.files.length && <EteeReport {...this.props} {...this.state} fClearFiles={this.fClearFiles} />}
</Layout>
);
}
}
console.log(this.mBaseService)
либо в конструкторе, либо вfHandleOnDrop
, я думаю, вы увидите, что он доступен в обоих местах. Я не уверен, почему вы не можете видеть это в отладчике. - person Tholle   schedule 12.08.2018console.log(this.mBaseService)
вfHandleOnDrop
, я увижу ожидаемый результат, даже если я нахожусь в инструментах разработчика и вывожуthis.mBaseService
в консоль, он приходит как неопределенный. Я все еще хотел бы знать, почему, но я закрою, если это рекомендуется. - person John Vandivier   schedule 12.08.2018class extends Page
? Ну, уPage
тоже естьmBaseService = new ServiceBaseService();
, но он не показывался у меня при отладке. Теперь, если я прокомментирую это свойство в дочернем классе иconsole.log
увижу его, хотя если яdebugger
запрошу на консоли, оно не будет определено. - person John Vandivier   schedule 12.08.2018