reagieren js mapStateToProps löst Uncaught TypeError: Cannot read property 'map' of undefined

Habe ich eine index.js das macht alle Tabellen in der Datenbank.

_renderAllTables() {
const { fetching } = this.props;

let content = false;

if(!fetching) {
  content = (
    <div className="tables-wrapper">
      {::this._renderTables(this.props.allTables)}
    </div>
    );
}

return (
  <section>
    <header className="view-header">
      <h3>All Tables</h3>
    </header>
    {content}
  </section>
);
}

_renderTables(tables) {

return tables.map((table) => {
  return <Table
            key={table.id}
            dispatch={this.props.dispatch}
            {...table} />;               
});
}

render() {
return (
  <div className="view-container tables index">
    {::this._renderAllTables()}
  </div>
  );
 }
}
const mapStateToProps = (state) => (
  state.tables);

export default connect(mapStateToProps)(HomeIndexView);

Änderte ich mapStateToProps aus dem obigen code folgenden code.

 const mapStateToProps = (state) => ({
tables: state.tables,
currentOrder: state.currentOrder,
});

Der Grund, warum ich geändert, code, den ich verwenden wollte ein Staat von currentOrder. Ich habe einen Staat, der zeigt, ob der Tisch besetzt ist oder nicht. Also, um zu verwenden, die ich Hinzugefügt currentOrder in mapStateToProps. Allerdings löst es Uncaught TypeError: Cannot read property 'map' of undefined..

Wie kann ich Zustände von den anderen Komponenten? irgendwelche Vorschläge dafür??

Vielen Dank im Voraus..

--reducer.js

 const initialState = {
  allTables: [],
  showForm: false,
  fetching: true,
  formErrors: null,
   };


  export default function reducer(state = initialState, action = {}) {
   switch(action.type){
    case Constants.TABLES_FETCHING:
        return {...state, fetching: true};

    case Constants.TABLES_RECEIVED:
        return {...state, allTables: action.allTables, fetching: false};

    case Constants.TABLES_SHOW_FORM:
        return {...state, showForm: action.show};

    case Constants.TALBES_RESET:
        return initialState;

    case Constants.ORDERS_CREATE_ERROR:
        return { ...state, formErrors: action.errors };


    default:
        return state;
   }
 }
  • Der einzige Aufruf map() hier funktioniert auf this.props.allTables und ich sehe keine Stelle, die Einstellung, die zu nichts. Natürlich wird es dann undefiniert sein. Aber ich bin mir nicht sicher, was die eigentliche Frage ist, da tht Titel sagt eine, die Frage spricht über "Staaten, die aus anderen Komponenten" etc. Könnten Sie das klären?
  • Oh, ich dachte, es war nicht zu arbeiten, denn ich habe versucht, um die Staaten von anderen Komponenten... also ich muss festgelegt dieser.Requisiten.allTables etwas.. bin ich im Recht?
  • Natürlich. Es kann nicht magisch wissen, was Sie versuchen zu tun, eine Eigenschaft, die Sie nicht definieren,
  • Danke, so in diesem.Requisiten.allTable ist-Daten aus Datenbank per httpGet... Für diesen Fall, wie soll ich es definieren, um die Darstellung aller Tabellen richtig???
  • Sie haben reducer für diese Aktion? Ich denke, das problem ist es
  • Sie sicher, dass action.allTables wieder richtige array-Tabelle-Objekt?
  • Ja, ich hab 16 arrays, die Ihre id und Nummer..

InformationsquelleAutor D.R | 2016-11-14
Schreibe einen Kommentar