2016-10-24 3 views
0

Es scheint, dass meine Daten in meiner React-Anwendung nicht geladen werden können. Hier ist der Code Schritt für Schritt: Die Daten des Zustandes in ./books:Fehler melden: Eigenschaft 'map' von undefined kann nicht gelesen werden

export default function books(){ 
    return ([ 
     {title:'A',pages:100}, 
     {title:'B',pages:200}, 
     {title:'C',pages:300}, 
     {title:'D',pages:400} 
    ]); 
} 

dann in root reducer i haben:

import books from './books'; 
import {combineReducers} from 'redux'; 

const rootReducer = combineReducers({ 
    books:books 
}); 


export default rootReducer; 

und die Wurzel Minderer erfolgreich mit dem Wurzelelement hinzugefügt :

import rootReducer from './reducers/books'; 
import {createStore} from 'redux'; 
import {Provider} from 'react-redux'; 

const Store= createStore(rootReducer); 

ReactDOM.render(
    <Provider store={Store}> 
    <App /> 
    </Provider>, document.getElementById('root') 
); 

und dann in der Bücherliste Komponente versuche ich, es zu benutzen:

Leider wirft sie mit dem Fehler:

Uncaught TypeError: Cannot read property 'map' of undefined 

Es scheint, dass this.props.books nicht definiert ist, aber es sollte nicht. Was ist das Problem?

+0

versuchen, console.log in mapStateToProps zu tun und zu überprüfen, ob der Status Bücher enthält 'console.log (state)' – KOTIOS

+0

es enthält Daten – Salman

+0

ich denke, Sie sollten die connect-Funktion wie folgt ändern 'export default connect (mapStateToProps, null) (BookList); ' – KOTIOS

Antwort

0

Das Problem ist, dass Sie die Funktion combinateReducers falsch verwenden. Es akzeptiert Reduzierungen. Ihre Buchfunktion sieht nicht wie ein Reduzierer aus. Sie können createReducer Funktion von redux-act Paket verwenden, um eine Reduzierfunktion zu erstellen. Lesen Sie auch, wie Reduzierstücke hier aussehen sollten: http://redux.js.org/docs/basics/Reducers.html.

Kurz Hand:

const bookReducer = createReducer(
    { 
    }, 
    books 
); 
const rootReducer = combineReducers({ 
    books: bookReducer 
}) 
0

Das Problem ist gelöst, wenn ich die mapStateToProps geändert

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

Entfernen der books von state in state.books aber ich weiß noch immer nicht, warum ist es so .

Haben Sie eine Idee?

Verwandte Themen