Я конвертирую проект реакции из redux в mobx, и у меня возникла следующая проблема: я использовал шаблон контейнер / презентатор с redux, что означало использование функции «connect» redux, например:
export default connect(mapStateToProps, mapDispatchToProps)(Leads);
Проблема, с которой я столкнулся, заключается в том, что нет эквивалентной функции mobx, поэтому вместо этого я попытался просто создать экземпляр компонента в контейнере. Что-то вроде:
render() {
return (
<MyComponent
store={mystore}
/>
);
}
К сожалению, это не работает, потому что MyComponent внедрил свойства из response-router, примерно так:
class MyComponent extends React.Component<ReportProps & RouteComponentProps<ReportProps>> {
constructor(public routeProps: ReportProps & RouteComponentProps<ReportProps>) {
super(routeProps);
}...
Я попытался избавиться от концепции контейнера, но та же проблема возникает и в других местах, потому что я использую декоратор mobx-react @inject. Например, у меня есть такой компонент:
export interface AddressProps {
report: IReportStore;
}
@inject((rootStore: RootStore) => ({
report: rootStore.report
}))
@observer
class Address extends React.Component<AddressProps> {
...
Если затем я попытаюсь использовать где-нибудь свой компонент, машинописный текст будет жаловаться, что я не передаю требуемое свойство (в данном случае - report), хотя мне и не нужно, поскольку я ввожу свойства.
Я полагаю, что мне не хватает чего-то базового, так как это довольно простое использование mobx. А может это просто проблема машинописного текста ...? Если да, есть идеи, как это исправить или обойти?
Заранее спасибо, Джонатан