2017-10-01 2 views
0

Je commence par tapuscrit et redux et j'ai rencontré l'erreur suivante lors du démarrage de mon application.La propriété 'dispatch' est manquante dans l'erreur de type lors du passage du magasin racine au composant racine

Type '{ store: Store<IRootState>; }' is not assignable to type 
'IntrinsicAttributes & Store<IRootState> & { children?: ReactNode; }'. 
Type '{ store: Store<IRootState>; }' is not assignable to type 'Store<IRootState>'. 
Property 'dispatch' is missing in type '{ store: Store<IRootState>; }'. 

Je le composant racine étant rendu suivant:

const Root: React.SFC<Store<IRootState>> = (store) => (
    <Provider store={store}> 
    <Router> 
     <Route exact={true} path="/" component={App} /> 
    </Router> 
    </Provider> 
); 

ReactDOM.render(
    <Root store={RootStore}/>, 
//......~~~~~~~~~~~~~~~~~ 
    document.getElementById('root') as HTMLElement 
); 

L'erreur se produit dans la ligne store={RootStore}. Ici RootStore est le résultat de l'appel createStore sur mon réducteur de racine et l'état initial. Type d'état initial est IRootState qui est assez basique:

export interface IRootState { 
    navBar: INavBarState; 
} 

et le magasin racine est exportée comme suit:

const RootStore = createStore(rootReducer, initialState); 
export default RootStore; 

Si je comprends bien (que je suis sûr que je ne suis pas), l'erreur se produit car le paramètre dispatch n'est pas présent sur la valeur de retour de createStore. Mais puisque c'est une fonction de bibliothèque, je suis enclin à croire qu'il me manque quelque chose de plutôt évident ici.

Répondre

1

Le problème est que pour Root, vous déclarez les accessoires comme un objet de type Store<IRootState>, plutôt que d'un objet avec une propriété de type storeStore<IRootState>. D'où l'erreur '{ store: Store<IRootState>; }' is not assignable to type 'Store<IRootState>'

Envelopper le paramètre de type et le paramètre store devrait faire l'affaire:

const Root: React.SFC<{store: Store<IRootState>}> = ({store}) => (
+0

Merci beaucoup, je savais que c'était quelque chose assez basique que je manquais. – Bhargav