2016-04-24 17 views
0

Ich bin neu in der React/Redux-Welt, aber nach meinem Verständnis wird ein Reduzierer zum globalen Status der App hinzugefügt. Wenn ich es in meinem mapStateToProps verweisen, obwohl ich ein ReferenceError: books is not definedmapStateToProps kann Reduzierer nicht finden

books_reducer.js

export default function() { 
    return [ 
    { title: 'Book1' }, 
    { title: 'Book2' }, 
    { title: 'Book3'} 
    ] 
} 

reducers.js

import { combineReducers } from 'redux' 

import booksReducer from './books_reducer' 

const appReducer = combineReducers({ 
    books: booksReducer 
}) 

export default appReducer 

container.js

import React, { Component } from 'react' 
import { connect } from 'react-redux' 

class App extends Component { 
    renderList() { 
    return(
     this.props.books.maps((book) => { 
     return(
      <li key={book.title} className='lsit-group-item'>{book.title}</li> 
     ) 
     }) 
    ) 
    } 

    render() { 
    return(
     <ul className='list-group col-sm-4'> 
     {this.renderList()} 
     </ul> 
    ) 
    } 
} 

function mapStateToProps(state) { 
    return(
    books: state.books 
) 
} 

export default connect(mapStateToProps)(App) 

bekommen app.js

import React from 'react' 
import ReactDOM from 'react-dom' 
import { Provider } from 'react-redux' 
import { createStore } from 'redux' 

import App from './containers/containers' 
import appReducer from './reducers/reducers' 

let store = createStore(appReducer) 

ReactDOM.render(
    <Provider store={store}> 
    <App /> 
    </Provider>, 
    document.getElementById('app') 
) 
+0

Was passiert, wenn Sie tun 'console.log (store.getState())', bevor Sie machen die? –

Antwort

2

Es sieht so aus, als ob Sie in Ihrer mapStateToProps-Funktion einen Syntaxfehler haben könnten.

function mapStateToProps(state) { 
    return(
    books: state.books 
) 
} 

Sie wollten wahrscheinlich ein Objektliteral zurückgeben.

function mapStateToProps(state) { 
    return { 
    books: state.books 
    }; 
} 
+0

Entschuldigung, ich habe den Laden bereits erstellt. Ich weiß nicht, warum ich das nicht aufgenommen habe. Aktualisierte Frage –

Verwandte Themen