2016-07-20 16 views
1

Für Reduktorstufe: Was, wenn ich nur eine einzige Eigenschaft von initial_state ändern möchte. Zum Beispiel:So geben Sie den Status der Redux-Reduzierungen zurück

const INITIAL_STATE = { 
    signInInfo: { 
    signin: false, 
    name: "", 
     email: "", 
    ... 
    }, 
    changePassword: { 
    status: false, 
    ... 
    } 
    ... 
}; 

Hier möchte ich nur signInInfo.signin als true setzen, zur Zeit, ich die einzige Art und Weise kennen, ist die Eingabe eines kompletten "signInInfo" wie:

case SIGNIN_USER: 
    return { ...state, signInInfo: action.payload.data }; 

action.payload.data ist wie:

{ 
    signin: true, 
    name: "Qing", 
    email : ... 
} 

Und eine andere Frage ist was, wenn ich signInInfo.signin als false einstellen will und mittlerweile auch 0 ändern mussvon false bis true. Was soll ich tun? Kann mir jemand einen Hinweis geben?

Antwort

1

ziemlich einfach (beide Fragen):

case SIGNIN_USER: return { 
    ...state, 
    signInInfo: { 
     ...state.signInInfo, 
     signin: action.payload.signin 
    }, 
    changePassword: { 
     ...state.changePassword, 
     status: true 
    } 
    }; 
+0

traf ich ein neues Problem: Wenn es ein Objekt-Array in dem Zustand, und ich möchte nur wie arr [0] .flag zu wahr, was soll ich tun? Ich weiß einfach nicht, wie man das arr in dieser Art von Ausdruck, wie oben gezeigt, darstellt. Vielen Dank! – user6557921

+0

'return [{... state [0], flag: action.payload}, ... state.slice (1)];' https://github.com/reactjs/redux/blob/master/examples/ todos-mit-rückgängig/src/reducers/todos.js # L33 http://redux.js.org/docs/basics/Reducers.html – DDS

Verwandte Themen