我正在尝试在基于Typescript的项目中使用名为redux-form的库。当我采用他们的"简单形式"示例代码并实现它我得到一个错误:
error TS2604: JSX element type 'SimpleForm' does not have any construct or call signatures.
我做错了什么?我安装了这个lib的定义文件,所以要么我编码错误,要么定义文件不正确。
在我的表单组件中(将代码剥离以使其尽可能精简):
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>
);
}
}
答案 0 :(得分:12)
我认为您的问题在于如何导入默认导出类:
export default reduxForm(...
如果您按上述声明,那么您应该像这样导入它:
import SimpleForm from '../components/GuestForm'
否则你可以删除'default'并将其导入如下:
import {SimpleForm} from '../components/GuestForm'
希望这有帮助。
答案 1 :(得分:2)
我无法评论上面的答案(来自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';
它解决了我的问题。