authenticated. Вам также нужны создатели действий, которые создают действия, отвечающие за вход пользователя и за выход пользователя из системы, а также сами объекты действий. reducer для обработки различных действий аутентификации. Используйте JavaScript оператор switch в 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 должен вернуть объект со свойством type, установленным в строковое значение 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: Отправка 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: Отправка 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.");'
```