@ChristianRavn Я не использовал редукс-форму с момента своего ответа, поэтому я не чувствовал необходимости больше смотреть. В чем проблема с ответом Дениса?
аюсь передать пользовательский реквизит для моего компонента, который украшенreduxForm
, Также я очень новичок в Typescript.
Первая проблема заключается в том, что я не могу обернуть украшенный компонент с помощью connect:
export default
connect(mapStateToProps)(
reduxForm({
form: 'myform'
})(MyComponent)
)
Ошибка:
Error:(89, 5) TS2345:Argument of type 'DecoratedComponentClass<any, Partial<ConfigProps<any, {}>>>' is not assignable to parameter of type 'ComponentType<{ addressValue: any; isDeliveryAddress: any; customerTypeValue: any; } & DispatchPr...'.
Type 'DecoratedComponentClass<any, Partial<ConfigProps<any, {}>>>' is not assignable to type 'StatelessComponent<{ addressValue: any; isDeliveryAddress: any; customerTypeValue: any; } & Dispa...'.
Type 'DecoratedComponentClass<any, Partial<ConfigProps<any, {}>>>' provides no match for the signature '(props: { addressValue: any; isDeliveryAddress: any; customerTypeValue: any; } & DispatchProp<any> & { children?: ReactNode; }, context?: any): ReactElement<any> | null'.
Это, очевидно, вызвано неправильными типами, но, как я уже сказал, я новичок в Typescript, и я не уверен, что делать с этими длинными ошибками. На данный момент мне не нужно передавать какие-либо реквизитыvalidate
функция формы, но это будет очень полезно для будущих задач.
Основная проблема в том, что я не могу передать пользовательский реквизит декорированному компоненту:
export default reduxForm({
form: 'myform'
})(
connect(mapStateToProps)(MyComponent)
);
форма реквизита:
interface Props extends InjectedFormProps {
onSubmit: () => void;
// some values from the state
loading: boolean; // the custom prop
}
и когда я пытаюсь это:
<MyForm loading onSubmit={this.handleSubmit} />
выдает еще одну ошибку:
Error:(134, 25) TS2339:Property 'loading' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<FormInstance<any, Partial<ConfigProps<any, {}>>>> ...'.
Странно то, что я могу передавать реквизит, который объявлен вInjectedFormProps
интерфейс, но я не могу передать какие-либо специальные реквизиты. На самом деле, я могу передать любые реквизиты изmapStateToProps
функция. Может быть, я просто не могу передать какие-либо специальные реквизиты для украшенного компонента сreduxForm
.