2016-12-29 1 views
0

Ich habe einen Bestellstatus.Ist es möglich, Daten im Reduktor auszuwählen und diese Daten in einen der Zustände zu setzen?

Im Bestellstatus gibt es folgende Zustände.

const initialState = { 
channel: null, 
order: {}, 
fetching:true, 
menu: [], 
categories: [], 
subcategories: [], 
currentCategoryId: 1, 
currentSubcategoryId: 5, 
currentMenu: [], 
}; 

So ist menu alle Listen der Nahrungsmittel in der Datenbank. categories sind eine Liste der Menükategorien und subcategories sind eine Liste aller Unterkategorien.

Wenn ein Benutzer nun auf den Kategorien-Selektor klickt, ändert sich der Wert currentCategoryId und es werden Elemente mit der ausgewählten Kategorie-ID angezeigt. Für currentSubcategoryId funktioniert das gleiche mit currentCategoryId.

So jetzt versuche ich Seitenumbruch für das Menü zu machen. Um Seitenumbrüche für das Menü zu erstellen, muss ich berechnen, wie viele Menüs es gibt, basierend auf category_id oder subcategory_id, zum Beispiel, wenn currentCategoryId 1 ist, wie viele Menüs mit category_id = 1 da sind. Also habe ich currentMenu gemacht. Was ich versuche mit currentMenu zu tun ist, dass, wenn ein Benutzer auf Kategorienwähler klickt, um currentCategoryId zu ändern, er Wert in Reduzierer ändert und Menü erhält, von dem category_id gleich geändert wird. if-Anweisung Werte zu currentMenu Array

case Constants.CHANGE_CATEGORY: 
     return {...state, currentCategoryId: action.categoryId, currentMenu: state.menu.map((menu) => { 
      if (currentCategoryId === category_id) { 
       // Put results of if statement to currentMenu array.. 
      } 
     })}; 

Also machte ich Minderer Fall wie oben, aber ich weiß nicht, wie kann ich Ergebnisse einfügen ... Wie kann ich das erreichen? Irgendwelche Vorschläge?

Vielen Dank im Voraus.

Antwort

0

Wenn ich dich richtig verstehe, kannst du ein wirklich tolles Paket namens 'react-addons-update' verwenden.

So kann man zum Beispiel so etwas wie:

import update from 'react-addons-update' 
... 
... 
case Constants.CHANGE_CATEGORY: 
    ... 
     if (currentCategoryId === category_id) { 
      ... 
      return update(state, { 
      $merge: { [currentMenu]: value } 
     }); 
      ... 
     } 
    })}; 

Eine weitere nützliche Befehle wie $ merge ist gesetzt $.

Sie können mehr lesen here

Verwandte Themen