authenticated
свойством. Вам также нужны создатели действий, которые создают действия, соответствующие логину пользователя и пользователю, а также сами объекты действий. reducer
для обработки нескольких действий аутентификации. Используйте оператор switch
JavaScript в reducer
чтобы реагировать на различные события действий. Это стандартный образец при записи редукторов Redux. Оператор switch должен переключать action.type
и возвращать соответствующее состояние аутентификации. Примечание. На этом этапе не беспокойтесь о неизменности состояния, поскольку в этом примере оно мало и просто. Для каждого действия вы можете вернуть новый объект - например {authenticated: true}
. Кроме того, не забудьте написать случай по default
в вашем операторе switch, который возвращает текущее state
. Это важно, потому что, как только ваше приложение имеет несколько редукторов, все они запускаются в любое время, когда происходит отправка действий, даже если действие не связано с этим редуктором. В таком случае вы хотите убедиться, что вы вернете текущее state
. loginUser
должен вернуть объект с свойством type, установленным в строку LOGIN
.'
testString: 'assert(loginUser().type === "LOGIN", "Calling the function loginUser
should return an object with type property set to the string LOGIN
.");'
- text: 'Вызов функции logoutUser
должен вернуть объект с свойством типа, установленным в строку LOGOUT
.'
testString: 'assert(logoutUser().type === "LOGOUT", "Calling the function logoutUser
should return an object with type property set to the string LOGOUT
.");'
- text: 'Магазин должен быть инициализирован объектом с authenticated
свойством, установленным на false
.'
testString: 'assert(store.getState().authenticated === false, "The store should be initialized with an object with an authenticated
property set to false
.");'
- text: Dispatching loginUser
должен обновить authenticated
свойство в состоянии хранилища до 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
должен обновить authenticated
свойство в состоянии хранилища до 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: Функция authReducer
должна обрабатывать несколько типов действий с помощью оператора 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.");'
```