authenticated
. También necesita creadores de acciones que creen acciones correspondientes al inicio de sesión del usuario y al cierre de sesión del usuario, junto con los propios objetos de acción. reducer
para manejar múltiples acciones de autenticación. Use una declaración de switch
JavaScript en el reducer
para responder a diferentes eventos de acción. Este es un patrón estándar en la escritura de reductores de Redux. La instrucción de cambio debe cambiar sobre action.type
y devolver el estado de autenticación apropiado. Nota: En este punto, no se preocupe por la inmutabilidad del estado, ya que es pequeño y simple en este ejemplo. Para cada acción, puede devolver un nuevo objeto, por ejemplo, {authenticated: true}
. Además, no olvide escribir un caso default
en su declaración de cambio que devuelva el state
actual. Esto es importante porque una vez que su aplicación tiene varios reductores, todos se ejecutan cada vez que se realiza un envío de acción, incluso cuando la acción no está relacionada con ese reductor. En tal caso, desea asegurarse de que devuelve el state
actual. loginUser
debe devolver un objeto con la propiedad type establecida en la cadena LOGIN
.
testString: 'assert(loginUser().type === "LOGIN", "Calling the function loginUser
should return an object with type property set to the string LOGIN
.");'
- text: Llamar a la función logoutUser
debe devolver un objeto con la propiedad type establecida en la cadena LOGOUT
.
testString: 'assert(logoutUser().type === "LOGOUT", "Calling the function logoutUser
should return an object with type property set to the string LOGOUT
.");'
- text: La tienda debe inicializarse con un objeto con una propiedad authenticated
establecida en false
.
testString: 'assert(store.getState().authenticated === false, "The store should be initialized with an object with an authenticated
property set to false
.");'
- text: El envío de loginUser
debe actualizar la propiedad authenticated
en el estado de almacenamiento a true
.
testString: 'assert((function() { const initialState = store.getState(); store.dispatch(loginUser()); const afterLogin = store.getState(); return initialState.authenticated === false && afterLogin.authenticated === true })(), "Dispatching loginUser
should update the authenticated
property in the store state to true
.");'
- text: Dispatching logoutUser
debe actualizar la propiedad authenticated
en el estado de almacenamiento a false
.
testString: 'assert((function() { store.dispatch(loginUser()); const loggedIn = store.getState(); store.dispatch(logoutUser()); const afterLogout = store.getState(); return loggedIn.authenticated === true && afterLogout.authenticated === false })(), "Dispatching logoutUser
should update the authenticated
property in the store state to false
.");'
- text: La función authReducer
debe manejar múltiples tipos de acciones con una declaración de switch
.
testString: 'getUserInput => assert( getUserInput("index").toString().includes("switch") && getUserInput("index").toString().includes("case") && getUserInput("index").toString().includes("default"), "The authReducer
function should handle multiple action types with a switch
statement.");'
```