Wie kann ich das filter-array der Staat reagieren?
Ich habe um reducer, die viele Staaten.
const initialState = {
channel: null,
order: {},
fetching:true,
menu: [],
categories: [],
subcategories: [],
currentCategoryId: 1,
currentSubcategoryId: 5,
currentMenu: [],
};
Was gefiltert werden soll, ist menu
. menu
ist array der Staat für die Objekte der menu_item
ich habe currentCategoryId
und currentSubcategoryId
. Was will ich tun mit diesen Staaten ist, dass durch die Verwendung currentCategoryId
und currentSubcategoryId
filtern menu
und setzen gefiltert Staaten zu currentMenu
.
case Constants.ORDER_CHANNEL_CONNECTED:
return
{...state,currentMenu: action.menu.map((menu) => {
if(state.currentCategoryId == menu.category_id){
return menu;
}
else return false;}}
Damit zu tun, dass ich code wie oben. Obwohl es gibt einige gefilterte Wert, es zeigt die gleiche Anzahl von Arrays mit vielen false-Werte. Ich möchte hier andere Ansätze das zu tun..
Wie kann ich dies tun?
Vielen Dank im Voraus.
InformationsquelleAutor D.R | 2017-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte verwenden Sie die
filter
Funktion:P. S: ich Stimme mit der Antwort unten, ist es besser zu nutzen Immutable.js
filter
Funktion?Hauptgrund für die Verwendung unveränderlich ist, um kostspielige Klonen ganze Objekt. Immutable-Objekt speichern nur den Unterschied zur vorherigen version. Es arbeitet schneller, vor allem in den großen Projekt mit großen Status-Objekte. Lesen Sie mehr über Vorteile, here
InformationsquelleAutor Ilya Lyamkin
Ich würde sagen, Sie verwenden können immutable.js für diese Zwecke. Sie können hinzufügen
filter
zu Ihrer Karte.Können Sie versuchen, so etwas wie
P. S: ich habe getestet mit den oben genannten code, es sollte aber mit kleinen änderungen.
Sie können herausfinden, mehr über unveränderlich hier
currentMenu: Immutable.map(state.menu).filter(state.currentCategoryId===menu.category_id)
, aber es löst Fehler, dieImmutable.map is not defined
.. also versuchte ichImmutable.Map(state.menu)....
aber es löst dennoch Fehler, diemenu is not defined
Wie soll ich das ändern?InformationsquelleAutor Harkirat Saluja
InformationsquelleAutor Parth Navadiya