```jsx
-// Define an action here:
+// Объявите действие здесь:
```
diff --git a/curriculum/challenges/russian/03-front-end-libraries/redux/define-an-action-creator.russian.md b/curriculum/challenges/russian/03-front-end-libraries/redux/define-an-action-creator.russian.md
index 3b8bbc4761..fb0c655af6 100644
--- a/curriculum/challenges/russian/03-front-end-libraries/redux/define-an-action-creator.russian.md
+++ b/curriculum/challenges/russian/03-front-end-libraries/redux/define-an-action-creator.russian.md
@@ -4,14 +4,14 @@ title: Define an Action Creator
challengeType: 6
isRequired: false
videoUrl: ''
-localeTitle: Определить создателя действий
+localeTitle: Определить создателя действия
---
## Description
-
После создания действия следующий шаг отправляет действие в хранилище Redux, чтобы он мог обновить свое состояние. В Redux вы определяете создателей действий для достижения этого. Создатель действия - это просто функция JavaScript, которая возвращает действие. Другими словами, создатели действий создают объекты, которые представляют события действий.
+
После создания действия следующий шаг - отправление действия в хранилище Redux, чтобы обновить свое состояние. В Redux вы определяете создателей действий для завершения процесса. Создатель действия - это просто функция JavaScript, которая возвращает действие. Другими словами, создатели действий создают объекты, которые представляют события действия.
## Instructions
-
Определите функцию с именем actionCreator()
которая возвращает объект action
при вызове.
+
Определите функцию actionCreator()
, которая возвращает объект action
при вызове.
## Tests
@@ -22,7 +22,7 @@ tests:
testString: 'assert(typeof actionCreator === "function", "The function actionCreator
should exist.");'
- text: Запуск функции actionCreator
должен вернуть объект действия.
testString: 'assert(typeof action === "object", "Running the actionCreator
function should return the action object.");'
- - text: Возвращаемое действие должно иметь тип свойства ключа со значением LOGIN
.
+ - text: Возвращаемое действие должно иметь свойство type со значением LOGIN
.
testString: 'assert(action.type === "LOGIN", "The returned action should have a key property type with value LOGIN
.");'
```
@@ -38,7 +38,7 @@ tests:
const action = {
type: 'LOGIN'
}
-// Define an action creator here:
+// Определите создателя действия здесь:
```
diff --git a/curriculum/challenges/russian/03-front-end-libraries/redux/dispatch-an-action-event.russian.md b/curriculum/challenges/russian/03-front-end-libraries/redux/dispatch-an-action-event.russian.md
index bb99361efb..bb6a316f99 100644
--- a/curriculum/challenges/russian/03-front-end-libraries/redux/dispatch-an-action-event.russian.md
+++ b/curriculum/challenges/russian/03-front-end-libraries/redux/dispatch-an-action-event.russian.md
@@ -8,19 +8,19 @@ localeTitle: Отправка события
---
## Description
-undefined
+ Метод dispatch
- это то, что вы используете для отправки действий в хранилище Redux. Вызов store.dispatch()
со значением, которое получено из создателя действия, посылает действие обратно в хранилище. Напомним, что создатель действия возвращает объект со свойством type, который определяет произошедшее действие. Потом метод отправляет объект действия в хранилище Redux. Основываясь на примере из предыдущего упражнения, следующие строки эквивалентны, и обе отправляют действие типа LOGIN
: store.dispatch(actionCreator());
store.dispatch({ type: 'LOGIN' });
## Instructions
-undefined
+ В редакторе кода в хранилище Redux инициализировано состояние в виде объекта со свойством login
, у которого задано значение false
. Также объявлен создатель действия loginAction()
, который возвращает действие типа LOGIN
. Отправьте действие LOGIN
в хранилище Redux, вызвав метод dispatch
и передайте ему действие, созданное функцией loginAction()
.
## Tests
```yml
tests:
- - text: Вызов функции loginAction
должен возвращать объект с свойством type
установленным в строку LOGIN
.
+ - text: Вызов функции loginAction
должен возвращать объект со свойством type
, у которого установлено значение LOGIN
.
testString: 'assert(loginAction().type === "LOGIN", "Calling the function loginAction
should return an object with type
property set to the string LOGIN
.");'
- - text: Магазин должен быть инициализирован объектом с идентификатором login
установленным в значение false
.
+ - text: Хранилище должно быть инициализировано объектом с идентификатором login
, установленным в значение false
.
testString: 'assert(store.getState().login === false, "The store should be initialized with an object with property login
set to false
.");'
- text: Метод store.dispatch()
должен использоваться для отправки действия типа LOGIN
.
testString: 'getUserInput => assert((function() { let noWhiteSpace = getUserInput("index").replace(/\s/g,""); return noWhiteSpace.includes("store.dispatch(loginAction())") || noWhiteSpace.includes("store.dispatch({type: \"LOGIN\"})") === true })(), "The store.dispatch()
method should be used to dispatch an action of type LOGIN
.");'
@@ -45,7 +45,7 @@ const loginAction = () => {
}
};
-// Dispatch the action here:
+// Отправьте действие здесь:
```
diff --git a/curriculum/challenges/russian/03-front-end-libraries/redux/get-state-from-the-redux-store.russian.md b/curriculum/challenges/russian/03-front-end-libraries/redux/get-state-from-the-redux-store.russian.md
index 2a7373646a..9157c1d637 100644
--- a/curriculum/challenges/russian/03-front-end-libraries/redux/get-state-from-the-redux-store.russian.md
+++ b/curriculum/challenges/russian/03-front-end-libraries/redux/get-state-from-the-redux-store.russian.md
@@ -4,23 +4,23 @@ title: Get State from the Redux Store
challengeType: 6
isRequired: false
videoUrl: ''
-localeTitle: Получить статус из магазина Redux
+localeTitle: Получение состояния из хранилища Redux
---
## Description
- Объект хранилища Redux предоставляет несколько методов, которые позволяют вам взаимодействовать с ним. Например, вы можете получить текущее state
сохраненное в объекте хранилища Redux, с помощью getState()
.
+ У объекта хранилища Redux есть несколько методов, которые позволяют вам взаимодействовать с ним. Например, вы можете получить текущее состояние state
, сохраненное в объекте хранилища Redux, с помощью метода getState()
.
## Instructions
- Код из предыдущего вызова переписывается более кратко в редакторе кода. Используйте store.getState()
для извлечения state
из store
и присвойте ему новую переменную currentState
.
+ Код из предыдущего упражнения переписан более кратко в редакторе кода. Используйте store.getState()
для извлечения state
из store
и присвойте его новой переменной currentState
.
## Tests
```yml
tests:
- - text: Хранилище redux должно иметь значение 5 для начального состояния.
+ - text: В хранилище Redux должно быть значение 5 для начального состояния.
testString: 'assert(store.getState()===5, "The redux store should have a value of 5 for the initial state.");'
- - text: Переменная currentState
должна существовать и ей должно быть присвоено текущее состояние хранилища Redux.
+ - text: Переменная currentState
должна существовать, и ей должно быть присвоено текущее состояние хранилища Redux.
testString: 'getUserInput => assert(currentState === 5 && getUserInput("index").includes("store.getState()"), "A variable currentState
should exist and should be assigned the current state of the Redux store.");'
```
@@ -37,7 +37,7 @@ const store = Redux.createStore(
(state = 5) => state
);
-// change code below this line
+// измените код ниже этой линии
```
diff --git a/curriculum/challenges/russian/03-front-end-libraries/redux/handle-an-action-in-the-store.russian.md b/curriculum/challenges/russian/03-front-end-libraries/redux/handle-an-action-in-the-store.russian.md
index 5bc491417b..0fb48a37c8 100644
--- a/curriculum/challenges/russian/03-front-end-libraries/redux/handle-an-action-in-the-store.russian.md
+++ b/curriculum/challenges/russian/03-front-end-libraries/redux/handle-an-action-in-the-store.russian.md
@@ -4,27 +4,27 @@ title: Handle an Action in the Store
challengeType: 6
isRequired: false
videoUrl: ''
-localeTitle: Управлять действием в магазине
+localeTitle: Обработка действия в хранилище
---
## Description
- После того, как действие создано и отправлено, хранилище Redux должно знать, как реагировать на это действие. Это задача reducer
. Редукторы в Redux отвечают за изменения состояния, которые происходят в ответ на действия. reducer
принимает state
и action
качестве аргументов и всегда возвращает новое state
. Важно видеть, что это единственная роль редуктора. Он не имеет побочных эффектов - он никогда не называет конечную точку API и никогда не имеет никаких скрытых сюрпризов. Редуктор - это просто чистая функция, которая принимает состояние и действие, а затем возвращает новое состояние. Другим ключевым принципом в Redux является то, что state
доступно только для чтения. Другими словами, функция reducer
должна всегда возвращать новую копию state
и никогда не изменять состояние напрямую. Redux не обеспечивает неизменность состояния, однако вы несете ответственность за его выполнение в коде своих функций редуктора. Вы будете практиковать это в более поздних проблемах.
+ После того, как действие создано и отправлено, хранилище Redux должно знать, как реагировать на это действие. Это задача функции reducer
. Редукторы в Redux отвечают за изменения состояния, которые происходят в ответ на действия. reducer
принимает state
и action
в качестве аргументов и всегда возвращает новое state
. Важно видеть, что это единственная роль редуктора. Он не имеет побочных эффектов - он никогда не вызывает конечную точку API (API endpoint) и никогда не имеет никаких скрытых сюрпризов. Редуктор - это просто чистая функция, которая принимает состояние и действие, а затем возвращает новое состояние. Другим ключевым принципом в Redux является то, что state
доступно только для чтения. Другими словами, функция reducer
должна всегда возвращать новую копию state
и никогда не изменять состояние напрямую. Redux не обеспечивает неизменность состояния, однако вы несете ответственность за его выполнение в коде своих функций редуктора. Вы будете практиковать это в следующих упражнениях.
## Instructions
- Редактор кода имеет предыдущий пример, а также начало функции reducer
для вас. Заполните тело функции reducer
так, чтобы, если он получает действие типа 'LOGIN'
он возвращает объект состояния с login
установленным в true
. В противном случае он возвращает текущее state
. Обратите внимание, что текущее state
и отправленное action
передаются в редуктор, поэтому вы можете напрямую обращаться к типу действия с помощью action.type
.
+ В редакторе кода записан предыдущий пример, а также каркас функции reducer
для вас. Заполните тело функции reducer
так, чтобы, если она получает действие типа 'LOGIN'
она возвращает объект состояния с login
, установленным в true
. В противном случае он возвращает текущее state
. Обратите внимание, что текущее state
и отправленное action
передаются в редуктор, поэтому вы можете напрямую обращаться к типу действия с помощью action.type
.
## Tests
```yml
tests:
- - text: 'Вызов функции loginAction
должен возвращать объект с свойством типа, установленным в строку LOGIN
.'
+ - text: 'Вызов функции loginAction
должен возвращать объект со свойством type, установленным в строку LOGIN
.'
testString: 'assert(loginAction().type === "LOGIN", "Calling the function loginAction
should return an object with type property set to the string LOGIN
.");'
- - text: Магазин должен быть инициализирован объектом с идентификатором login
установленным в значение false
.
+ - text: Хранилище должно быть инициализировано объектом с идентификатором login
, установленным в значение false
.
testString: 'assert(store.getState().login === false, "The store should be initialized with an object with property login
set to false
.");'
- - text: ''
+ - text: 'Отправка loginAction
должна обновлять свойство login
в состоянии хранилища на true
.'
testString: 'assert((function() { const initialState = store.getState(); store.dispatch(loginAction()); const afterState = store.getState(); return initialState.login === false && afterState.login === true })(), "Dispatching loginAction
should update the login
property in the store state to true
.");'
- - text: ''
+ - text: 'Если действие не типа LOGIN
, то хранилище должно вернуть текущее состояние.'
testString: 'assert((function() { store.dispatch({type: "__TEST__ACTION__"}); let afterTest = store.getState(); return typeof afterTest === "object" && afterTest.hasOwnProperty("login") })(), "If the action is not of type LOGIN
, the store should return the current state.");'
```
@@ -42,9 +42,9 @@ const defaultState = {
};
const reducer = (state = defaultState, action) => {
- // change code below this line
+ // изменить код ниже этой линии
- // change code above this line
+ // измените код выше этой линии
};
const store = Redux.createStore(reducer);