2016-02-02 11 views
5

Potrebbe essere che io sia grosso e molto nuovo a Redux, ma mi piacerebbe se qualcuno potesse darmi un caso di utilizzo semplice per l'utilizzo di qualcosa come normalizr.Qual è il punto di normalizzazione delle risposte api in un'app Redux?

Non capisco l'esempio dato qui How do I handle nested API responses in a Flux application?

Suppongo che ciò che non sto ottenendo è il motivo per cui it's hard per Stores a consumare gli oggetti nidificati.

La mia app è un portale di dimensioni medio-grandi, in cui gli utenti possono visualizzare elenchi, creare nuovi elementi e nuovi elenchi parlando con due API diverse.

+0

Hai letto la documentazione? http://redux.js.org/docs/basics/Reducers.html –

risposta

5

Normalizzo tutti i miei oggetti ma non uso normalizr.

Mi piace normalizzare perché rende il codice più leggibile. Un esempio qui sotto. Rende anche molto più facile fare riferimento agli oggetti ed eliminare la duplicazione. Ad esempio, se ti iscrivi a un oggetto todo su un elenco di qualcuno, devi restituire una versione duplicata di quel todo nell'elenco subscribedTodos dell'abbonato, oppure devi conoscere l'id utente e il resto dell'altra per ottenere ad esso.

Torna alla leggibilità: quale di questi è meglio leggere/comprendere?

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

Questo è abbastanza chiaro, grazie. Penso che quest'ultima funzione sia più facile da leggere. –

1

Il consumo di oggetti nidificati non è necessariamente difficile.

Tutto dipende dal tuo caso d'uso e da come è organizzata l'interfaccia utente.

Se non ha senso utilizzare il normalizr, non utilizzarlo. Quel modulo non è davvero un requisito.

+0

Tutti i punti positivi, grazie. –