私は単純な反応還元型のフォームを持っています。 form.container.tsxとform.component.tsxが存在することを願っています。ここで、form.container.tsxは、redux状態からFieldを差し引いたすべての接続を保持しています。 (理想)form.container.tsxTypeXとReactを使ってreduxフォームv7を入力
:
interface DummyFormContainerProps {}
export const DummyFormContainer: React.SFC<DummyFormContainerProps> = props => {
const submitForm = (formValues: object) => {
alert(formValues);
};
return (
<DummyForm
onSubmit={submitForm}
/>
);
};
const mapStateToProps = (state: State) => ({});
const mapDispatchToProps = (dispatch: object) => {
return {};
};
const mergeProps = (stateProps: State, dispatchProps: object | null, ownProps: object | void) =>
Object.assign({}, stateProps, dispatchProps, ownProps);
const formConfiguration = {
form: 'dummy-form',
forceUnregisterOnUnmount: true
};
export default connect(mapStateToProps, mapDispatchToProps)(
reduxForm(formConfiguration)(DummyFormContainer)
);
以上が動作しません私はのは、接続してから、TypeScript, redux-form and connectのようなものを見て、その中にreduxFormを包む反応-Reduxの中で私の容器をラップしようとしています
(reduxFormなく動作)form.container.tsx:
export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(
DummyFormContainer
);
私はreduxForm()の部分を取り出した場合、しかし、私はノーreduxFormの統合と作業コンテナに残されています
そして、私はreduxFormsでさまざまなバリエーションを試してみましたが、接続し、すべての現在働いていませんでした:
(クラスで)form.container.tsx:
export class DummyFormContainer extends React.Component<DummyFormContainerProps, void> {
submitForm = (formValues: object) => {
alert(formValues);
}
render() {
return (
<DummyForm
onSubmit={this.submitForm}
/>
);
}
}
const mapStateToProps = (state: State) => ({});
const mapDispatchToProps = (dispatch: object) => {
return {};
};
const mergeProps = (stateProps: State, dispatchProps: object | null, ownProps: object | void) =>
Object.assign({}, stateProps, dispatchProps, ownProps);
const formConfiguration = {
form: 'business-registration',
};
export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(
reduxForm(formConfiguration)(DummyFormContainer) // ERROR
);
エラー:
./src/modules/dummy-form/dummy-form.container.tsx
(100,32): error TS2345: Argument of type 'typeof DummyFormContainer' is not assignable to parameter of type 'ComponentType<InjectedFormProps<{}, {}>>'.
Type 'typeof DummyFormContainer' is not assignable to type 'StatelessComponent<InjectedFormProps<{}, {}>>'.
Type 'typeof DummyFormContainer' provides no match for the signature '(props: InjectedFormProps<{}, {}> & { children?: ReactNode; }, context?: any): ReactElement<any> | null'.
を(ステートレス機能コンポーネント付き)form.container.tsx:
export const DummyFormContainer: React.SFC<DummyFormContainerProps> = props => {
const submitForm = (formValues: object) => {
alert(formValues);
};
return (
<DummyForm
onSubmit={submitForm}
/>
);
};
export default connect(mapStateToProps, mapDispatchToProps, mergeProps)(
reduxForm(formConfiguration)(DummyFormContainer) // ERROR
);
errまたは:
./src/modules/dummy-form/dummy-form.container.tsx
(100,3): error TS2345: Argument of type 'DecoratedComponentClass<{}, Partial<ConfigProps<{}, {}>>>' is not assignable to parameter of type 'ComponentType<(State & null & void) | (State & null & object) | (State & object & void) | (State ...'.
Type 'DecoratedComponentClass<{}, Partial<ConfigProps<{}, {}>>>' is not assignable to type 'StatelessComponent<(State & null & void) | (State & null & object) | (State & object & void) | (S...'.
Type 'DecoratedComponentClass<{}, Partial<ConfigProps<{}, {}>>>' provides no match for the signature '(props: (State & null & void & { children?: ReactNode; }) | (State & null & object & { children?: ReactNode; }) | (State & object & void & { children?: ReactNode; }) | (State & object & { children?: ReactNode; }), context?: any): ReactElement<any> | null'.
form.component.tsxは次のようになります。
import * as React from 'react';
import Input from '../../components/input';
interface DummyFormProps {
onSubmit: (formValues: object) => void
}
export const DummyForm: React.SFC<DummyFormProps> =() => {
return (
<div>
<h1>DummyForm (no state)</h1>
<form>
<Input inputType="primary" />
</form>
</div>
);
};
export default DummyForm;
そして<入力>コンポーネントは、通常のリアクトコンポーネントです。
誰もreduxFormとreact-reduxのconnect()を正しく接続する方法を知っていますか?
Reduxの-forms.d.ts:私たちがやってしまったことは私たちの目を閉じて、型宣言ファイルでデフォルトのタイプを上書きすることでした
このタイプのファイルは、プロジェクトのルートレベルまたはnode_modulesフォルダのどちらに入れるか –
src/typings/redux-forms.d.tsに入れます。 MicrosoftのTypescriptスクリプトでcreate-react-appを使用しました。 何かをするためにpackage.jsonを変更していないので、TypeScriptがsrc /フォルダ内のものを選んで 'declare'というキーワードを読んでいると思います。 –
私はあなたが言うようにします。私はこの以下のエラーに直面した。 エラー:TS2305:モジュール 'redux-form' 'にはエクスポートされたメンバー' FormErrors 'がありません。 私の依存関係は: https://jsfiddle.net/mglrahul/9qrn6gbn/1/ –