14

Typescript ベースのプロジェクトで redux-form というライブラリを使用しようとしています。「単純な形式」のサンプル コードを使用して実装すると、エラーが発生します。

error TS2604: JSX element type 'SimpleForm' does not have any construct or call signatures.

私は何を間違っていますか?このライブラリの定義ファイルがインストールされているため、コーディングが間違っているか、定義ファイルが正しくありません。

私のフォームコンポーネント(コードを可能な限りスリムにするためにコードを削除しました):

import * as React from 'react';
import {reduxForm} from 'redux-form';
export const fields = ['firstName'];

class SimpleForm extends React.Component<any, any> {

  static propTypes = {
    fields: React.PropTypes.object.isRequired,
  };

  render() {
    const {
      fields: {firstName}
      } = this.props;
    return (<form>
        <div>
          <label>First Name</label>
          <div>
            <input type="text" placeholder="First Name" {...firstName}/>
          </div>
        </div>

        <div>
          <button>
            Submit
          </button>
        </div>
      </form>
    );
  }
}

export default reduxForm({
  form: 'simple',
  fields
})(SimpleForm);

ここでそれを消費します(上記のエラーが発生します):

import * as React from 'react';
import * as ReactDOM from 'react-dom';
import * as SimpleForm from '../components/GuestForm';

export default class Main extends React.Component<any, any> {
     render() {
        return (
        <div className='mainApp'>
            <SimpleForm />
        </div>
        );
    }
}
4

3 に答える 3

19

あなたの問題は、デフォルトのエクスポートされたクラスをインポートする方法にあると思います:

export default reduxForm(...

上記のように宣言した場合は、次のようにインポートする必要があります。

import SimpleForm from '../components/GuestForm'

それ以外の場合は、「デフォルト」を削除して、次のようにインポートできます。

import {SimpleForm} from '../components/GuestForm' 

お役に立てれば。

于 2016-01-24T07:05:59.990 に答える
5

上記の回答 (Amid から) についてコメントすることはできません。StackOverflow での評判が十分でないためですが、彼の回答は正しいです。

同じ問題がありました: *** (82,14): エラー TS2604: JSX 要素タイプ 'SlideForm' にはコンストラクター呼び出しシグネチャがありません。***

これが私の以前のコードです:

export default class SliderForm extends React.Component<any, any> {...};

クラスをインポートする前の方法で:

import * from SlideForm from '../../common/SliderForm';

これは私をあなたと同じ問題に導きます。


そこで、インポートの方法を次のように変更しました。

import SlideForm from '../../common/SliderForm';

そして、それは私の問題を解決しました。

于 2016-11-27T22:55:03.970 に答える