2016-02-02 15 views
5

To może być bycie grubym i bardzo nowym dla Redux, ale bardzo bym chciał, gdyby ktoś dał mi prosty przypadek użycia, używając czegoś takiego jak normalizr.Jaki jest sens normalizacji odpowiedzi na api w aplikacji Redux?

Nie rozumiem przykład podany tutaj How do I handle nested API responses in a Flux application?

Przypuszczam, czego nie dostaję dlatego it's hard dla sklepów spożywać obiektów zagnieżdżonych.

Moja aplikacja to portal o średniej wielkości, w którym użytkownicy mogą wyświetlać listy, tworzyć nowe pozycje i nowe listy, rozmawiając z dwoma różnymi interfejsami API.

+0

Czy przeczytałeś dokumentację? http://redux.js.org/docs/basics/Reducers.html –

Odpowiedz

5

Normalizuję wszystkie moje obiekty, ale nie używam normalizatora.

Lubię normalizować, ponieważ sprawia, że ​​kod jest bardziej czytelny. Przykład poniżej. Dzięki temu znacznie łatwiej jest odwoływać się do obiektów i eliminować duplikowanie. Na przykład, jeśli subskrybujesz element todo na liście elses, musisz albo zwrócić duplikowaną wersję tego todo na liście subskrybentów subscribedTodos, albo musisz znać identyfikator użytkownika i instrukcję drugiego todo, aby uzyskać do tego.

Powrót do czytelności: Które z poniższych funkcji lepiej przeczytać/zrozumieć?

function rootReducer (state, action) { 
    const { type, payload } = action; 

    if(action.type === MODIFY_TODO) { 
    return { 
     ...state, 
     users: { 
     ...state.users, 
     [payload.userID]: { 
      ...state.users[userID], 
      todos: { 
      ...state.users[userID].todos, 
      [payload.todo.todoID]: { 
       ...state[userID].todos[todoID], 
       ...todo 
      } 
      } 
     } 
     } 
    } 
    } else { return state; } 
} 

function rootReducer (state, action) { 
    const { type, payload } = action; 

    if(type === MODIFY_TODO) { 
    return { 
     ...state, 
     todos: { 
     state.todos[payload.todo.id]: { 
      ...state.todos[payload.todo.id], 
      ...payload.todo 
     } 
     } 
    } 
    } else { return state; } 
} 
+0

To całkiem jasne dzięki. Myślę, że ta druga funkcja jest łatwiejsza do odczytania. –

1

Spożywanie zagnieżdżonego obiektu niekoniecznie jest trudne.

Wszystko zależy od Twojego przypadku użycia i sposobu organizacji Twojego interfejsu użytkownika.

Jeśli nie ma sensu używać normalizatora, nie należy go używać. Ten moduł naprawdę nie jest wymagany.

+0

Wszystkie zalety, dzięki. –