2017-05-22 8 views
1

Hier ist meine index.js Datei Code -während der Anwendung applyMiddleware (thunk) immer "keine Klasse als Funktion aufrufen können", reagieren in js

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import App from './App'; 
import './index.css'; 
import { BrowserRouter as Router, Route } from 'react-router-dom'; 
import { Provider } from 'react-redux'; 
import thunk from 'react-thunk'; 
import { createStore, applyMiddleware } from 'redux'; 
import Login from './Components/LoginRegister'; 

const store= createStore(
     (state = {}) => state, 
     applyMiddleware(thunk) 
    ); 

ReactDOM.render(( 
    <Provider store={store}> 
     <Router> 
     <switch> 
      <Route exact path="/" component={App} /> 
      <Route path="/Loginregister" component={Login} /> 
     </switch> 
     </Router> 
    </Provider> ), 
    document.getElementById('root') 
); 

als ich vorbei bin 'thunk' in 'applyMiddleware' als ‚applyMiddleware (thunk)‘ dann unter Fehler auf Konsole ich erhalte -

Uncaught TypeError: Cannot call a class as a function 
    at _classCallCheck (index.js:15) 
    at ReactThunk (index.js:36) 
    at applyMiddleware.js:51 
    at createStore (createStore.js:65) 
    at Object.<anonymous> (index.js:11) 
    at __webpack_require__ (bootstrap b42575b…:555) 
    at fn (bootstrap b42575b…:86) 
    at Object.<anonymous> (bootstrap b42575b…:578) 
    at __webpack_require__ (bootstrap b42575b…:555) 
    at bootstrap b42575b…:578 

lassen Sie es mich wissen, was ich falsch mache.

Antwort

6

sind Sie

import thunk from 'react-thunk'; 

Import Aber thunk ist von der Redux-Thunk-Modul.

So sollten Sie importieren

import thunk from 'redux-thunk'; 

Außerdem denke ich, wird es ein Problem mit dem Aufruf von „creates“ sein.

createStore nimmt einen Reduzierer (oder kombinierte Reduzierer) und mögliche Middleware.

Ein Reduzierer nimmt einen Status und eine Aktion und muss den neuen Status des Geschäfts zurückgeben.

function reducer(state, action){ 

    // Switch-Case for action.type 
    // Copy the current state and apply changes 

    return state; 
} 
+0

Freak! Ich habe diesen Fehler auch gemacht! : P – PassionInfinite

+0

lol ich tat das auch. – mancini0

1

Nun, Ihr Problem ist offensichtlich aus dem Fehler. Sie können eine Funktion nicht als Klasse senden. in createStore() ist Ihr erstes Argument eine Funktion. Es sollte die kombinierten Reduzierungen sein, die Sie haben.

Erstellen Sie eine Datei mit den Reduzierungen, die Sie haben, importieren Sie sie in die Indexdatei. dann etwas tun, wie

const store = createStore(rootReducer, applyMiddleware(thunk)) 
+0

thx für Ihre schnelle Antwort, Also, was kommt in rootReducer.js Datei? Ist "(state = {}) => state" oder etwas anderes? – Atul

+0

Noch eine Sache, wenn ich "applyMiddleware() anstelle von applyMiddleware (thunk)" schreibe, dann zeigt es keinen Fehler, bist du sicher, dass unser erstes Argument fehlerbezogen ist? – Atul

+0

Zuerst, wie @Bjoern erwähnt, importiere "Thunk" von "Redux-Thunk", vielleicht ist das das Hauptproblem. Möglicherweise haben Sie "react-thunk" anstelle von "redux-thunk" installiert, weshalb Sie keinen Modulfehler haben. Über den rootReducer nehmen Reduzierer Status und Aktion und geben einen neuen Status gemäß der an sie gesendeten Aktion zurück. –

Verwandte Themen