Skip to content

Commit f10fa79

Browse files
committed
feat: code-examples translation
1 parent cc9e613 commit f10fa79

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

src/content/learn/state-as-a-snapshot.md

+25-25
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ title: Состояние как снимок
2121

2222
Вы можете думать, что события, которые появляются от взаимодействия пользователя с интерфейсом (например, после нажатия кнопки), должны моментально изменять UI. На самом деле, в React это работает немного по-другому. На предыдущей странице вы видели, что [изменение состояния запрашивает повторный рендер](/learn/render-and-commit#step-1-trigger-a-render). Это значит, чтобы интерфейс смог отреагировать на событие, необходимо *обновить состояние*.
2323

24-
Рассмотрим пример кода ниже. Когда вы нажимаете на кнопку "Send", `setIsSent(true)` сообщает React о необходимости повторного рендера UI:
24+
Рассмотрим пример кода ниже. Когда вы нажимаете на кнопку "Отправить", `setIsSent(true)` сообщает React о необходимости повторного рендера UI:
2525

2626
<Sandpack>
2727

@@ -30,9 +30,9 @@ import { useState } from 'react';
3030

3131
export default function Form() {
3232
const [isSent, setIsSent] = useState(false);
33-
const [message, setMessage] = useState('Hi!');
33+
const [message, setMessage] = useState('Привет!');
3434
if (isSent) {
35-
return <h1>Your message is on its way!</h1>
35+
return <h1>Ваше сообщение уже в пути!</h1>
3636
}
3737
return (
3838
<form onSubmit={(e) => {
@@ -45,7 +45,7 @@ export default function Form() {
4545
value={message}
4646
onChange={e => setMessage(e.target.value)}
4747
/>
48-
<button type="submit">Send</button>
48+
<button type="submit">Отправить</button>
4949
</form>
5050
);
5151
}
@@ -256,44 +256,44 @@ setTimeout(() => {
256256

257257
Рассмотрим пример, как это правило делает обработчики событий более устойчивыми к ошибкам синхронизации. Ниже представлена форма, которая отправляет сообщение с задержкой в 5 секунд. Представьте себе сценарий:
258258

259-
1. Вы нажимаете на кнопку "Send", отправляя "Hello" для Alice.
260-
2. До того, как истечёт пятисекундный таймер, вы успеете поменять значение поля "To" на "Bob".
259+
1. Вы нажимаете на кнопку "Отправить", отправляя "Привет" для Элис.
260+
2. До того, как истечёт пятисекундный таймер, вы успеете поменять значение поля "Кому" на "Бобу".
261261

262-
Какой результат вы ожидаете увидеть в `alert`? Будет отображено "You said Hello to Alice" или же "You said Hello to Bob"? Попробуйте предположить, опираясь на знания, которые вы получили ранее, после запустите пример и посмотрите результат:
262+
Какой результат вы ожидаете увидеть в `alert`? Будет отображено "Вы сказали Привет Элис" или же "Вы сказали Привет Бобу"? Попробуйте предположить, опираясь на знания, которые вы получили ранее, после запустите пример и посмотрите результат:
263263

264264
<Sandpack>
265265

266266
```js
267267
import { useState } from 'react';
268268

269269
export default function Form() {
270-
const [to, setTo] = useState('Alice');
271-
const [message, setMessage] = useState('Hello');
270+
const [to, setTo] = useState('Элис');
271+
const [message, setMessage] = useState('Привет');
272272

273273
function handleSubmit(e) {
274274
e.preventDefault();
275275
setTimeout(() => {
276-
alert(`You said ${message} to ${to}`);
276+
alert(`Вы сказали ${message} ${to}`);
277277
}, 5000);
278278
}
279279

280280
return (
281281
<form onSubmit={handleSubmit}>
282282
<label>
283-
To:{' '}
283+
Кому:{' '}
284284
<select
285285
value={to}
286286
onChange={e => setTo(e.target.value)}>
287-
<option value="Alice">Alice</option>
288-
<option value="Bob">Bob</option>
287+
<option value="Элис">Элис</option>
288+
<option value="Бобу">Бобу</option>
289289
</select>
290290
</label>
291291
<textarea
292292
placeholder="Message"
293293
value={message}
294294
onChange={e => setMessage(e.target.value)}
295295
/>
296-
<button type="submit">Send</button>
296+
<button type="submit">Отправить</button>
297297
</form>
298298
);
299299
}
@@ -344,12 +344,12 @@ export default function TrafficLight() {
344344
return (
345345
<>
346346
<button onClick={handleClick}>
347-
Change to {walk ? 'Stop' : 'Walk'}
347+
Изменить на {walk ? 'Стоп' : 'Можно идти'}
348348
</button>
349349
<h1 style={{
350350
color: walk ? 'darkgreen' : 'darkred'
351351
}}>
352-
{walk ? 'Walk' : 'Stop'}
352+
{walk ? 'Можно идти' : 'Стоп'}
353353
</h1>
354354
</>
355355
);
@@ -362,7 +362,7 @@ h1 { margin-top: 20px; }
362362

363363
</Sandpack>
364364

365-
Вам необходимо добавить `alert` в обработчик кликов. Когда загорается зелёный свет и появляется текст "Walk", должно быть оповещение "Stop is next". Когда свет красный и текст "Stop", должно быть оповещение "Walk is next".
365+
Вам необходимо добавить `alert` в обработчик кликов. Когда загорается зелёный свет и появляется текст "Можно идти", должно быть оповещение "Дальше Стоп". Когда свет красный и текст "Стоп", должно быть оповещение "Дальше Можно идти".
366366

367367
Имеет ли значение, помещаете ли вы `alert` до или после вызова `setWalk`?
368368

@@ -380,18 +380,18 @@ export default function TrafficLight() {
380380

381381
function handleClick() {
382382
setWalk(!walk);
383-
alert(walk ? 'Stop is next' : 'Walk is next');
383+
alert(walk ? 'Дальше Стоп' : 'Дальше Можно идти');
384384
}
385385

386386
return (
387387
<>
388388
<button onClick={handleClick}>
389-
Change to {walk ? 'Stop' : 'Walk'}
389+
Изменить на {walk ? 'Стоп' : 'Можно идти'}
390390
</button>
391391
<h1 style={{
392392
color: walk ? 'darkgreen' : 'darkred'
393393
}}>
394-
{walk ? 'Walk' : 'Stop'}
394+
{walk ? 'Можно идти' : 'Стоп'}
395395
</h1>
396396
</>
397397
);
@@ -409,26 +409,26 @@ h1 { margin-top: 20px; }
409409
Эта строка может показаться на первый взгляд нелогичной:
410410

411411
```js
412-
alert(walk ? 'Stop is next' : 'Walk is next');
412+
alert(walk ? 'Дальше Стоп' : 'Дальше Можно идти');
413413
```
414414

415-
В ней появится смысл, если читать её так: "Если светофор показывает 'Walk now', в сообщении должно быть 'Stop is next', иначе 'Walk is next'". Значение переменной `walk` внутри вашего обработчика событий соответствует значению `walk` этого рендера и не изменяется.
415+
В ней появится смысл, если читать её так: "Если светофор показывает 'Можно идти', в сообщении должно быть 'Дальше Стоп', иначе 'Дальше Можно идти'". Значение переменной `walk` внутри вашего обработчика событий соответствует значению `walk` этого рендера и не изменяется.
416416

417417
Вы можете убедиться в этом и провести подстановку необходимых значений. Когда `walk` равно `true`, вы получаете:
418418

419419
```js
420420
<button onClick={() => {
421421
setWalk(false);
422-
alert('Stop is next');
422+
alert('Дальше Стоп');
423423
}}>
424-
Change to Stop
424+
Изменить на Стоп
425425
</button>
426426
<h1 style={{color: 'darkgreen'}}>
427427
Walk
428428
</h1>
429429
```
430430

431-
Таким образом, нажатие на "Change to Stop" ставит в очередь рендер с `walk` равным `false` и оповещением "Stop is next".
431+
Таким образом, нажатие на "Изменить на Стоп" ставит в очередь рендер с `walk` равным `false` и оповещением "Дальше Стоп".
432432

433433
</Solution>
434434

0 commit comments

Comments
 (0)