Я пытаюсь внедрить магазины в компонент, но кажется, что он не работает.
Вот класс
import * as React from 'react';
import { inject, observer } from 'mobx-react';
import { FlightStore } from '../stores/FlightStore';
export interface HelloProps {
flightStore: FlightStore
}
@inject('flightStore')
@observer
class Hello extends React.Component<HelloProps, any> {
constructor(props: HelloProps) {
super(props);
this.state = {
//
}
}
componentWillMount() {
this.props.flightStore.getData();
}
render() {
return (
<div>
</div>
)
}
}
export default Hello;
Там написано Type '{}' is not assignable to type 'Readonly<HelloProps>'.
Property 'flightStore' is missing in type '{}'
, меня это смущает, потому что я нигде не объявляю какой-либо тип данных, поэтому я не знаю, что происходит.
Вот магазин
import { action, observable } from 'mobx';
import * as $ from 'jquery' ;
export class FlightStore {
@observable dataJ: any;
constructor() {
//
}
@action getData() {
$.ajax({
url: 'https://www.kayak.com/h/mobileapis/directory/airlines',
dataType: 'json',
cache: false,
success: (data: any) => {
this.dataJ = data;
console.log(data)
},
error: (xhr: any, status: any, err: any) => {
console.log(err);
}
})
console.log('I´m in getData')
}
}
Странно, потому что когда я пытаюсь поставить "?" в классе
export interface HelloProps {
flightStore?: FlightStore
}
это говорит, что this.props.flightStore => [ts] Object is possibly 'undefined'.
в ComponentWillMount ()
Обновление
И да, ошибка возникает, когда я пытаюсь использовать <Hello/>
компонент без прохождения реквизита, потому что я использую Mobx.
Индексное приложение
import * as React from 'react';
import Hello from './components/Hello';
import stores from './stores';
import { Provider } from 'mobx-react';
export default class App extends React.Component {
render() {
return (
<Provider {...stores}>
<div>
<Hello />
</div>
</Provider>
);
}
}