Réagir Routeur - Tapuscrit erreurs sur withRouter après la mise à jour de la version
J'ai juste essayé de mettre à jour mon Réagir application de
réagir-routeur - 4.0.19 à 4.0.20
réagir - 16.0.30 à 16.0.34
tapuscrit - "version 2.7.0-initiés.20180108"
Dans mon application, partout où je suis à l'aide de 'withRouter', j'obtiens maintenant cryptique Tapuscrit erreurs. J'ai même remplacé interface tous les accessoires avec "tout" simplement pour essayer de le faire fonctionner.
import * as React from 'react';
import { Switch, Route, withRouter} from 'react-router-dom';
import { Login } from './Login';
import { connect } from 'react-redux';
import { RootAction, RootState } from './_redux';
class MainForm extends React.Component<any> {
constructor(props: any) {
super(props);
}
render() {
return (
<Switch>
<Route exact={true} path="/" component={Login}/>
<Route path="/accounts" component={AccountsView}/>
</Switch>
);
}
}
const mapStateToProps = (state: RootState) => ({
state
});
export const Main = withRouter(connect(mapStateToProps)(MainForm);
erreur TS2345: Argument de type 'ComponentClass> & {
WrappedComponent: ComponentType; }' n'est pas assignable à
paramètre de type 'ComponentType>'. Type
'ComponentClass> & { WrappedComponent:
ComponentType; }' n'est pas assignable à type de
'StatelessComponent>'.
Type 'ComponentClass> & { WrappedComponent: ComponentType; }' offre pas de match pour la signature '(objets de décoration:
RouteComponentProps & { enfants?: ReactNode; }, contexte?: tout):
ReactElement | null".
Si je convertir la dernière ligne :
export const Main = connect(mapStateToProps)(MainForm);
Je n'ai pas d'erreurs. sérieusement frustrés ici.
Grâce
MODIFIER, j'ai changé pour
export const Main = connect(mapStateToProps)(withRouter(MainForm));
comme suggéré par Mayank Shukla. mais maintenant, obtenez l'erreur:
erreur TS2345: Argument de type 'ComponentClass>' est
pas assignable à paramètre de type 'ComponentType<{ etat: RootState;
} & DispatchProp>'. Type 'ComponentClass>' est
pas cessible de type 'StatelessComponent<{ etat: RootState; } &
DispatchProp>'.
Type 'ComponentClass>' offre pas de match pour la signature '(objets de décoration: { etat: RootState; } & DispatchProp & {
les enfants?: ReactNode; }, contexte?: échéant): ReactElement | null".
connect(mapStateToProps)(withRouter(MainForm))
merci @MayankShukla. je pense que c'est le progrès, mais maintenant je reçois l'erreur , comme expliqué ci-dessus.
Je suppose que votre syntaxe est incorrecte,
withRouter(connect(mapStateToProps)(MainForm))
, vous avez besoin d'un supplément d'une parenthèse fermante à la finje le fixe, mais toujours la même erreur 🙁
OriginalL'auteur 29er | 2018-01-12
Vous devez vous connecter pour publier un commentaire.
Je viens de mettre à Tapuscrit 2.6 et a obtenu le même problème.
J'ai réussi à le résoudre en utilisant
RouteComponentProps
.URL
http://localhost:8080/your-component/abc
et de la routeComposant devrait ressembler à ceci:
OriginalL'auteur Pavel
Je dois résoudre comme ceci:
OriginalL'auteur jakobdo
Voici comment j'ai l'habitude de structure de ma tapé Réagir composants:
OriginalL'auteur Max
Une autre solution, à l'aide de décorateurs
La première étape que vous devez faire en ajoutant à la
tsconfig.json
souscompilerOptions
le drapeauexperimentalDecorators: true
. Si vous avez encore des questions, changer la compilationtarget
à l'es5, si la cible est es7 il ne transpile le décorateur et de la plupart des navigateurs \ nœud versions ne le supporte pas encore.merci @Daniel l! je l'ai eu à travailler 🙂
OriginalL'auteur Daniel Krom
De travail sur la syntaxe de la variante de Type Script de l'application est:
Vous avez raison. Mais ce seul exemple à propos de la composante syntaxe de connexion, pas sur la machine.
OriginalL'auteur Jackkobec