reactjs - Error de Typescript: TS2604 - ¿Cómo solucionarlo?
Estoy intentando usar una biblioteca llamada redux-form en un proyecto basado en Typescript. Cuando tomo su código de ejemplo de "formulario simple" y lo implemento, obtengo un error:
error TS2604: JSX element type 'SimpleForm' does not have any construct or call signatures.
¿Qué estoy haciendo mal? Tengo el archivo de definición para esta librería instalado, así que o lo he codificado incorrectamente o el archivo de definición es incorrecto.
En mi componente de formulario (reduje el código al mínimo para hacerlo lo más ligero posible):
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);
y lo consumo aquí (lo que resulta en el error mencionado):
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>
);
}
}
Respuesta #1
Creo que tu problema está en cómo importas una clase exportada por defecto:
export default reduxForm(...
Si lo tienes declarado como arriba, entonces deberías importarlo así:
import SimpleForm from '../components/GuestForm'
De lo contrario, puedes eliminar 'default' e importarlo así:
import {SimpleForm} from '../components/GuestForm'
Espero que esto ayude.
Respuesta #2
No puedo comentar sobre la respuesta anterior (de Amid), porque no tengo suficiente reputación en StackOverflow, pero su respuesta es correcta.
Tuve el mismo problema: *** (82,14): error TS2604: El tipo de elemento JSX 'SlideForm' no tiene ninguna firma de llamada de constructor.***
Aquí está mi código anterior:
export default class SliderForm extends React.Component<any, any> {...};
con la forma anterior de importar la clase :
import * from SlideForm from '../../common/SliderForm';
Esto me lleva al mismo problema que el tuyo.
Así que cambié la forma en que estoy haciendo la importación a esto:
import SlideForm from '../../common/SliderForm';
Y resolvió mi problema.
