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