freeCodeCamp/guide/russian/redux/redux-reducers/index.md

49 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Redux Reducers
localeTitle: Редукторы Redux
---
## Редукторы Redux
Редукторы Redux позволяют вам вносить изменения в ваше состояние в вашем приложении. Действия в redux только сообщают приложению, что в основном произошло. Было ли это событие щелчка, или какой-либо прокруткой мыши, он просто скажет, что это произошло. Теперь, как вы собираетесь менять состояние своего приложения, которое живет внутри магазина, вы это делаете с помощью редуктора.
Теперь редуктор в редуксе должен быть чистой функцией. Чистая функция - это тип функции, которая не имеет дополнительных побочных эффектов. Вы передаете ему некоторые аргументы и возвращает ожидаемый результат. Например:
```javascript
function add(a,b) {
return a + b;
}
const sum = add(5,4);
```
Вышеупомянутая функция чиста, потому что независимо от того, что произойдет, она вернется 9. Функция, которая имеет вызовы ajax внутри нее или что-то вроде доступа к базе данных, не является чистой функцией. Даже если мы мутируем изменение значения, переменное значение можно рассматривать не как чистую функцию.
Теперь, чтобы внести изменения в состояние, вы используете редуктор. Вот пример кода редуктора:
```javascript
function todoReducer(state= [],action) {
case 'ADD_TODO':
return [...state,action.data]
case 'DELETE_TODO':
return state.filter(todo=>todo.id !== action.id)
default:
return state;
}
```
Что делает этот todoReducer, так это то, что он принимает текущее состояние и действие, которое было вызвано, а затем возвращает новое состояние. Здесь мы использовали синтаксис параметров по умолчанию es6, чтобы присвоить значение по умолчанию массиву состояний. Объект действия для вышеуказанного редуктора может выглядеть следующим образом:
```javascript
{
type: 'ADD_TODO',
data: {name: 'Learn Redux',completed:false}
}
```
Здесь действие имеет свойство типа «ADD\_TODO» с объектом данных. Теперь, когда это действие инициировано, оно принимается редуктором, а затем на основе оператора switch он возвращает новый массив с существующими данными вместе с новыми данными.
Таким образом, суммировать редукторы - это не что иное, как чистые функции, которые возвращают новое состояние для вашего приложения.
#### Дополнительная информация:
[Официальные документы Redux-Reducers](https://redux.js.org/basics/reducers)