2017-05-17 1 views
0

Ich habe gerade angefangen, mit Redux zu arbeiten. Ich habe ein Problem mit connect.js. Wenn ich meine App im Browser laufen, nichts zeigt und folgende FehlerFehler in Connect.js (React-Redux)

in der Konsole angezeigt wird
Uncaught TypeError: _this.store.getState is not a function 
    at new Connect (connect.js:134) 

auch den Screenshot der Konsole

Der Code

main.js

Befestigung
import React from 'react'; 
import {Link} from 'react-router'; 

class Main extends React.Component{ 
render(){ 
    return(
     <div> 
      <h1> 
       <Link>Instagram</Link> 
      </h1> 
      {React.cloneElement(this.props.children, this.props)} 
     </div> 
    ) 
} 
} 

export default Main; 

App.js (Dies ist, wo eine Verbindung aufgerufen wird)

import {bindActionCreators} from 'redux'; 
import {connect} from 'react-redux'; 
import * as actionCreators from '../actions/actionCreator'; 
import Main from './Main'; 
/** 
* How do expose Actions to some UI elements(e.g. buttons) and how do we expose our data to components 
* Ans. Connect() 
*/ 

function mapStateToProps(state){ 
    return{ 
     posts: state.posts, 
     comments: state.comments 
    } 
} 

function mapdispatchToProps(dispatch){ 
    return bindActionCreators(actionCreators,dispatch); 
} 

const App = connect(mapStateToProps, mapdispatchToProps)(Main); 

export default App; 

Mainfile

import React from 'react'; 

import {render} from 'react-dom'; 

import {Router, IndexRoute, Route, browserHistory} from 'react-router'; 

import css from './styles/style.styl'; 

import App from './components/App.js' 
import PhotoDetails from './components/PhotoDetails.js' 
import PhotoGrid from './components/PhotoGrid.js' 

import {Provider} from 'react-redux'; 

import store, {history} from './store'; 


const router =(
    <Provider store={store}> 
     <Router history={browserHistory}> 
      <Route path="/" component={App}> 
       <IndexRoute component={PhotoGrid}></IndexRoute> 
       <Route path="/view/:photoId" component={PhotoDetails}> </Route> 
      </Route> 
     </Router> 
    </Provider> 
) 

render(router, document.getElementById('root')); 
+1

Wie wärs mit einem minimalen Codebeispiel, das das Problem reproduziert? :) – Patrick

+0

@Patrick Ich habe den Code hinzugefügt. – moCap

+0

Haben Sie Ihren Shop richtig konfiguriert? (IE - funktioniert der Shop auch ohne all diese Komponenten korrekt?) – Patrick

Antwort

1

Ok hier ist Ihr Fehler:
in store.js Sie haben nicht export das store Objekt.
ändern es dazu:

import {createStore, compose} from 'redux'; 
import {syncHistoryWithStore} from 'react-router-redux'; 
import {browserHistory} from 'react-router'; 

//Root reducer 

import rootReducer from './reducers/index'; 

import comments from './data/comments'; 
import posts from './data/posts'; 


const defaultState={ 
    posts: posts, 
    comments: comments 
} 

const store = createStore(rootReducer, defaultState); 

export const history = syncHistoryWithStore(browserHistory,store); 

export default store; 

Und dann in reduxstagram.js können Sie sie wie folgt importieren:

import store, {history} from './store'; 
Verwandte Themen