[Rus] Improved the translation of Redux challenges (part 2) (#34324)

* [Rus] Improved the translation

Changed file "get-state-from-the-redux-store.russian.md"

* Changed line 11

* Improved the translation

* Improved the translation

* Added the translation to sections 

also improved the translation of the sections "tests" and "challengeSeed"

* Improved the translation
This commit is contained in:
elcodex
2019-05-14 08:54:23 +03:00
committed by Randell Dawson
parent 171b762775
commit a863078b02
5 changed files with 31 additions and 31 deletions

View File

@ -4,23 +4,23 @@ title: Define a Redux Action
challengeType: 6
isRequired: false
videoUrl: ''
localeTitle: Определение действия Redux
localeTitle: Определение Redux действия
---
## Description
undefined
<section id="description"> Т.к. Redux - это фреймворк управления состоянием, то обновление состояния - одна из его главных задач. В Redux все обновления состояния срабатывают по диспетчерским действиям. Действие - это просто JavaScript объект, который содержит информацию о произошедшем событии. Хранилище Redux получает объекты действий, затем обновляет состояние, если нужно. Иногда Redux действие также содержит некоторую дополнительную информацию. Например, действие "сообщает" имя пользователя после успешного входа в систему. Действие обязательно должно содержать поле <code>type</code> , которое указывает "тип" исполняемого действия. Думайте о действиях Redux как о сообщениях, которые передают информацию о событиях, происходящих в вашем приложении, хранилищу Redux. Хранилище затем занимается обновлением состояния, на основании действия которое случилось. </section>
## Instructions
<section id="instructions"> Написание действия Redux так же просто, как объявление объекта с свойством type. Объявите объект <code>action</code> и придать ему свойство <code>type</code> установлен в строке <code>&#39;LOGIN&#39;</code> . </section>
<section id="instructions"> Написание действия Redux это просто объявление объекта со свойством "тип". Объявите объект <code>action</code> и передайте ему свойство <code>type</code> со строковым значением <code>&#39;LOGIN&#39;</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: ''
- text: 'Объект действия существует.'
testString: 'assert((function() { return typeof action === "object" })(), "An action object should exist.");'
- text: ''
- text: 'Действие должно содержать свойство (ключ) type со значением <code>LOGIN</code> .'
testString: 'assert((function() { return action.type === "LOGIN" })(), "The action should have a key property type with value <code>LOGIN</code>.");'
```
@ -33,7 +33,7 @@ tests:
<div id='jsx-seed'>
```jsx
// Define an action here:
// Объявите действие здесь:
```

View File

@ -4,14 +4,14 @@ title: Define an Action Creator
challengeType: 6
isRequired: false
videoUrl: ''
localeTitle: Определить создателя действий
localeTitle: Определить создателя действия
---
## Description
<section id="description"> После создания действия следующий шаг отправляет действие в хранилище Redux, чтобы он мог обновить свое состояние. В Redux вы определяете создателей действий для достижения этого. Создатель действия - это просто функция JavaScript, которая возвращает действие. Другими словами, создатели действий создают объекты, которые представляют события действий. </section>
<section id="description"> После создания действия следующий шаг - отправление действия в хранилище Redux, чтобы обновить свое состояние. В Redux вы определяете создателей действий для завершения процесса. Создатель действия - это просто функция JavaScript, которая возвращает действие. Другими словами, создатели действий создают объекты, которые представляют события действия. </section>
## Instructions
<section id="instructions"> Определите функцию с именем <code>actionCreator()</code> которая возвращает объект <code>action</code> при вызове. </section>
<section id="instructions"> Определите функцию <code>actionCreator()</code> , которая возвращает объект <code>action</code> при вызове. </section>
## Tests
<section id='tests'>
@ -22,7 +22,7 @@ tests:
testString: 'assert(typeof actionCreator === "function", "The function <code>actionCreator</code> should exist.");'
- text: Запуск функции <code>actionCreator</code> должен вернуть объект действия.
testString: 'assert(typeof action === "object", "Running the <code>actionCreator</code> function should return the action object.");'
- text: Возвращаемое действие должно иметь тип свойства ключа со значением <code>LOGIN</code> .
- text: Возвращаемое действие должно иметь свойство type со значением <code>LOGIN</code> .
testString: 'assert(action.type === "LOGIN", "The returned action should have a key property type with value <code>LOGIN</code>.");'
```
@ -38,7 +38,7 @@ tests:
const action = {
type: 'LOGIN'
}
// Define an action creator here:
// Определите создателя действия здесь:
```

View File

@ -8,19 +8,19 @@ localeTitle: Отправка события
---
## Description
undefined
<section id="description"> Метод <code>dispatch</code> - это то, что вы используете для отправки действий в хранилище Redux. Вызов <code>store.dispatch()</code> со значением, которое получено из создателя действия, посылает действие обратно в хранилище. Напомним, что создатель действия возвращает объект со свойством type, который определяет произошедшее действие. Потом метод отправляет объект действия в хранилище Redux. Основываясь на примере из предыдущего упражнения, следующие строки эквивалентны, и обе отправляют действие типа <code>LOGIN</code> : <blockquote>store.dispatch(actionCreator()); <br> store.dispatch({ type: 'LOGIN' });</blockquote> </section>
## Instructions
undefined
<section id="instructions"> В редакторе кода в хранилище Redux инициализировано состояние в виде объекта со свойством <code>login</code> , у которого задано значение <code>false</code> . Также объявлен создатель действия <code>loginAction()</code> , который возвращает действие типа <code>LOGIN</code> . Отправьте действие <code>LOGIN</code> в хранилище Redux, вызвав метод <code>dispatch</code> и передайте ему действие, созданное функцией <code>loginAction()</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вызов функции <code>loginAction</code> должен возвращать объект с свойством <code>type</code> установленным в строку <code>LOGIN</code> .
- text: Вызов функции <code>loginAction</code> должен возвращать объект со свойством <code>type</code> , у которого установлено значение <code>LOGIN</code> .
testString: 'assert(loginAction().type === "LOGIN", "Calling the function <code>loginAction</code> should return an object with <code>type</code> property set to the string <code>LOGIN</code>.");'
- text: Магазин должен быть инициализирован объектом с идентификатором <code>login</code> установленным в значение <code>false</code> .
- text: Хранилище должно быть инициализировано объектом с идентификатором <code>login</code> , установленным в значение <code>false</code> .
testString: 'assert(store.getState().login === false, "The store should be initialized with an object with property <code>login</code> set to <code>false</code>.");'
- text: Метод <code>store.dispatch()</code> должен использоваться для отправки действия типа <code>LOGIN</code> .
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 <code>store.dispatch()</code> method should be used to dispatch an action of type <code>LOGIN</code>.");'
@ -45,7 +45,7 @@ const loginAction = () => {
}
};
// Dispatch the action here:
// Отправьте действие здесь:
```

View File

@ -4,23 +4,23 @@ title: Get State from the Redux Store
challengeType: 6
isRequired: false
videoUrl: ''
localeTitle: Получить статус из магазина Redux
localeTitle: Получение состояния из хранилища Redux
---
## Description
<section id="description"> Объект хранилища Redux предоставляет несколько методов, которые позволяют вам взаимодействовать с ним. Например, вы можете получить текущее <code>state</code> сохраненное в объекте хранилища Redux, с помощью <code>getState()</code> . </section>
<section id="description"> У объекта хранилища Redux есть несколько методов, которые позволяют вам взаимодействовать с ним. Например, вы можете получить текущее состояние <code>state</code> , сохраненное в объекте хранилища Redux, с помощью метода <code>getState()</code> . </section>
## Instructions
<section id="instructions"> Код из предыдущего вызова переписывается более кратко в редакторе кода. Используйте <code>store.getState()</code> для извлечения <code>state</code> из <code>store</code> и присвойте ему новую переменную <code>currentState</code> . </section>
<section id="instructions"> Код из предыдущего упражнения переписан более кратко в редакторе кода. Используйте <code>store.getState()</code> для извлечения <code>state</code> из <code>store</code> и присвойте его новой переменной <code>currentState</code> . </section>
## Tests
<section id='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: Переменная <code>currentState</code> должна существовать и ей должно быть присвоено текущее состояние хранилища Redux.
- text: Переменная <code>currentState</code> должна существовать, и ей должно быть присвоено текущее состояние хранилища Redux.
testString: 'getUserInput => assert(currentState === 5 && getUserInput("index").includes("store.getState()"), "A variable <code>currentState</code> 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
// измените код ниже этой линии
```

View File

@ -4,27 +4,27 @@ title: Handle an Action in the Store
challengeType: 6
isRequired: false
videoUrl: ''
localeTitle: Управлять действием в магазине
localeTitle: Обработка действия в хранилище
---
## Description
<section id="description"> После того, как действие создано и отправлено, хранилище Redux должно знать, как реагировать на это действие. Это задача <code>reducer</code> . Редукторы в Redux отвечают за изменения состояния, которые происходят в ответ на действия. <code>reducer</code> принимает <code>state</code> и <code>action</code> качестве аргументов и всегда возвращает новое <code>state</code> . Важно видеть, что это <strong>единственная</strong> роль редуктора. Он не имеет побочных эффектов - он никогда не называет конечную точку API и никогда не имеет никаких скрытых сюрпризов. Редуктор - это просто чистая функция, которая принимает состояние и действие, а затем возвращает новое состояние. Другим ключевым принципом в Redux является то, что <code>state</code> доступно только для чтения. Другими словами, функция <code>reducer</code> должна <strong>всегда</strong> возвращать новую копию <code>state</code> и никогда не изменять состояние напрямую. Redux не обеспечивает неизменность состояния, однако вы несете ответственность за его выполнение в коде своих функций редуктора. Вы будете практиковать это в более поздних проблемах. </section>
<section id="description"> После того, как действие создано и отправлено, хранилище Redux должно знать, как реагировать на это действие. Это задача функции <code>reducer</code> . Редукторы в Redux отвечают за изменения состояния, которые происходят в ответ на действия. <code>reducer</code> принимает <code>state</code> и <code>action</code> в качестве аргументов и всегда возвращает новое <code>state</code> . Важно видеть, что это <strong>единственная</strong> роль редуктора. Он не имеет побочных эффектов - он никогда не вызывает конечную точку API (API endpoint) и никогда не имеет никаких скрытых сюрпризов. Редуктор - это просто чистая функция, которая принимает состояние и действие, а затем возвращает новое состояние. Другим ключевым принципом в Redux является то, что <code>state</code> доступно только для чтения. Другими словами, функция <code>reducer</code> должна <strong>всегда</strong> возвращать новую копию <code>state</code> и никогда не изменять состояние напрямую. Redux не обеспечивает неизменность состояния, однако вы несете ответственность за его выполнение в коде своих функций редуктора. Вы будете практиковать это в следующих упражнениях. </section>
## Instructions
<section id="instructions"> Редактор кода имеет предыдущий пример, а также начало функции <code>reducer</code> для вас. Заполните тело функции <code>reducer</code> так, чтобы, если он получает действие типа <code>&#39;LOGIN&#39;</code> он возвращает объект состояния с <code>login</code> установленным в <code>true</code> . В противном случае он возвращает текущее <code>state</code> . Обратите внимание, что текущее <code>state</code> и отправленное <code>action</code> передаются в редуктор, поэтому вы можете напрямую обращаться к типу действия с помощью <code>action.type</code> . </section>
<section id="instructions"> В редакторе кода записан предыдущий пример, а также каркас функции <code>reducer</code> для вас. Заполните тело функции <code>reducer</code> так, чтобы, если она получает действие типа <code>&#39;LOGIN&#39;</code> она возвращает объект состояния с <code>login</code> , установленным в <code>true</code> . В противном случае он возвращает текущее <code>state</code> . Обратите внимание, что текущее <code>state</code> и отправленное <code>action</code> передаются в редуктор, поэтому вы можете напрямую обращаться к типу действия с помощью <code>action.type</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Вызов функции <code>loginAction</code> должен возвращать объект с свойством типа, установленным в строку <code>LOGIN</code> .'
- text: 'Вызов функции <code>loginAction</code> должен возвращать объект со свойством type, установленным в строку <code>LOGIN</code> .'
testString: 'assert(loginAction().type === "LOGIN", "Calling the function <code>loginAction</code> should return an object with type property set to the string <code>LOGIN</code>.");'
- text: Магазин должен быть инициализирован объектом с идентификатором <code>login</code> установленным в значение <code>false</code> .
- text: Хранилище должно быть инициализировано объектом с идентификатором <code>login</code> , установленным в значение <code>false</code> .
testString: 'assert(store.getState().login === false, "The store should be initialized with an object with property <code>login</code> set to <code>false</code>.");'
- text: ''
- text: 'Отправка <code>loginAction</code> должна обновлять свойство <code>login</code> в состоянии хранилища на <code>true</code> .'
testString: 'assert((function() { const initialState = store.getState(); store.dispatch(loginAction()); const afterState = store.getState(); return initialState.login === false && afterState.login === true })(), "Dispatching <code>loginAction</code> should update the <code>login</code> property in the store state to <code>true</code>.");'
- text: ''
- text: 'Если действие не типа <code>LOGIN</code> , то хранилище должно вернуть текущее состояние.'
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 <code>LOGIN</code>, 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);