Reux-FormとReact-Reduxとの間に非常に不本意な非互換性が見つかるまで、私はTypeScriptに惚れていました。React-Redux接続でRedux-Formを使用すると、TypeScriptエラーが発生する
私の目標は、reduxForm
装飾構成要素を反応装飾connect
デコレータでラップしています。このパターンはいつもバベル構成で機能し、HOC方法論に従っているようです。ここでは例です:
import * as React from 'react';
import { Dispatch } from 'redux';
import { connect } from 'react-redux';
import { reduxForm, Field, InjectedFormProps } from 'redux-form';
interface SampleFormData {
username: string;
}
interface SampleFormProps {
saveData: (data: SampleFormData) => void;
}
type AllSampleFormProps = SampleFormProps & InjectedFormProps<SampleFormData>;
const SampleForm: React.SFC<AllSampleFormProps> = (props) => (
<form onSubmit={props.handleSubmit(props.saveData)}>
<Field name="username" component="input" />
</form>
);
const DecoratedSampleForm = reduxForm<SampleFormData>({ form: "sampleForm" })(SampleForm);
export default connect(
() => ({}),
(dispatch) => ({
saveData: (data: SampleFormData) => dispatch({ type: "SAVE_DATA", data })
})
)(DecoratedSampleForm);
はここで活字体が投げているエラーです:
> Argument of type 'DecoratedComponentClass<SampleFormData,
> Partial<ConfigProps<SampleFormData, {}>>>' is not assignable to
> parameter of type 'ComponentType<{ saveData: (data: SampleFormData) =>
> { type: string; data: SampleFormData; }; }>'.
>
> Type 'DecoratedComponentClass<SampleFormData,
> Partial<ConfigProps<SampleFormData, {}>>>' is not assignable to type
> 'StatelessComponent<{ saveData: (data: SampleFormData) => { type:
> string; data: SampleFormData; };...'.
>
> Type 'DecoratedComponentClass<SampleFormData,
> Partial<ConfigProps<SampleFormData, {}>>>' provides no match for the
> signature '(props: { saveData: (data: SampleFormData) => { type:
> string; data: SampleFormData; }; } & { children?: ReactNode; },
> context?: any): ReactElement<any>'.
誰もが反応し、ReduxのをDecoratedComponentClass
タイプを受け入れるようにするために解決策を見つけていますか?私はsuggestion "中"のコンポーネントを使用するが、私はこれをサンクのアクションで動作するように管理していないことがわかりました。私はこれがフォームの小道具をタイプするという点で解決するよりも多くの問題を作り出すことを発見しました。
TypeScript + redux-form v7の例はありますか? –