Skip to content

Commit 130ff9a

Browse files
authored
Improvements of Uncontrolled Components
1 parent 3c6c89d commit 130ff9a

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

content/docs/uncontrolled-components.md

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ title: Неконтролируемые компоненты
44
permalink: docs/uncontrolled-components.html
55
---
66

7-
В большинстве случаев мы рекомендуем использовать [контролируемые компоненты]((/docs/forms.html)) для работы с формами.
8-
В контролируемом компоненте, данные формы обрабатываются React-компонентом.
9-
Альтернативой являются неконтролируемые компоненты, где данные форм обрабатываются через DOM.
7+
В большинстве случаев мы рекомендуем использовать [контролируемые компоненты](/docs/forms.html) для работы с формами. В контролируемом компоненте, данные формы обрабатываются React-компонентом. Альтернативой являются неконтролируемые компоненты, где данные форм обрабатываются через DOM.
108

11-
Вместо того, чтобы писать обработчик события для каждого обновления состояния, вы можете использовать неконтролируемый компонент и [ref](/docs/refs-and-the-dom.html) для получения значений из DOM.
9+
Вместо того, чтобы писать обработчик события для каждого обновления состояния, вы можете использовать неконтролируемый компонент и [реф](/docs/refs-and-the-dom.html) для получения значений из DOM.
1210

1311
Вот так, к примеру, можно получить имя в обработчике неконтролируемого компонента:
1412

@@ -21,18 +19,18 @@ class NameForm extends React.Component {
2119
}
2220
2321
handleSubmit(event) {
24-
alert('A name was submitted: ' + this.input.current.value);
22+
alert('Отправленное имя: ' + this.input.current.value);
2523
event.preventDefault();
2624
}
2725
2826
render() {
2927
return (
3028
<form onSubmit={this.handleSubmit}>
3129
<label>
32-
Name:
30+
Имя:
3331
<input type="text" ref={this.input} />
3432
</label>
35-
<input type="submit" value="Submit" />
33+
<input type="submit" value="Отправить" />
3634
</form>
3735
);
3836
}
@@ -41,44 +39,44 @@ class NameForm extends React.Component {
4139

4240
[**Посмотреть на CodePen**](https://codepen.io/gaearon/pen/WooRWa?editors=0010)
4341

44-
Такие компоненты хранят данные в DOM и их проще интегрировать в не-React приложение. Этот код можно сократить если пожертвовать стилистикой. В противном случае лучше использовать контролируемые компоненты.
42+
Такие компоненты хранят данные в DOM и их проще интегрировать в не React-приложении. Этот код можно сократить, если пожертвовать стилистикой. В противном случае лучше использовать контролируемые компоненты.
4543

46-
Если всё ещё остаётся непонятным какой тип компонента Вам необходимо использовать в конкретной ситуации, то, возможно, [статья о контролируемых против некотролируемых input'ах](http://goshakkk.name/controlled-vs-uncontrolled-inputs-react/) может показаться Вам полезной.
44+
Если всё ещё остаётся непонятным какой тип компонента вам необходимо использовать в конкретной ситуации, то, возможно, [статья о контролируемых против некотролируемых input'ах](http://goshakkk.name/controlled-vs-uncontrolled-inputs-react/) может показаться полезной.
4745

4846
### Значения по умолчанию {#default-values}
4947

50-
На этапе прорисовки жизненного цикла в React, атрибут `value` на элементах формы будет переопределять значение в DOM. С неконтролируемым компонентом Вам часто необходимо, чтобы React определял первоначальное значение, но оставлял неконтролируемыми последующие обновления. В этом случае, Вам необходимо определить атрибут `defaultValue` вместо `value`.
48+
На этапе рендеринга жизненного цикла в React, атрибут `value` на элементах формы будет переопределять значение в DOM. С неконтролируемым компонентом вам часто необходимо, чтобы React определял первоначальное значение, но оставлял неконтролируемыми последующие обновления. В этом случае, необходимо определить атрибут `defaultValue` вместо `value`.
5149

5250
```javascript{7}
5351
render() {
5452
return (
5553
<form onSubmit={this.handleSubmit}>
5654
<label>
57-
Name:
55+
Имя:
5856
<input
5957
defaultValue="Bob"
6058
type="text"
6159
ref={this.input} />
6260
</label>
63-
<input type="submit" value="Submit" />
61+
<input type="submit" value="Отправить" />
6462
</form>
6563
);
6664
}
6765
```
6866

69-
Аналогично, `<input type="checkbox">` и `<input type="radio">` используют `defaultChecked`, а `<select>` и `<textarea>` - `defaultValue`.
67+
Аналогично, `<input type="checkbox">` и `<input type="radio">` используют `defaultChecked`, а `<select>` и `<textarea>` `defaultValue`.
7068

71-
## The file input Tag {#the-file-input-tag}
69+
## Тег поля загрузки файла {#the-file-input-tag}
7270

73-
In HTML, an `<input type="file">` lets the user choose one or more files from their device storage to be uploaded to a server or manipulated by JavaScript via the [File API](https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications).
71+
HTML-тег `<input type="file">` позволяет пользователю выбрать один или несколько файлов из хранилища, чтобы загрузить их на сервер, либо управлять ими с помощью JavaScript, воспользовавшись [File API](https://developer.mozilla.org/ru/docs/Web/API/File/Using_files_from_web_applications).
7472

7573
```html
7674
<input type="file" />
7775
```
7876

79-
В React `<input type="file">` всегда является неконтролируемым компонентом, потому что его значение может быть установлено только пользователем, а не программно.
77+
В React `<input type="file">` всегда является неконтролируемым компонентом, потому что его значение может быть установлено только пользователем, а не программным путём.
8078

81-
Вы должны использовать File API для взаимодействия с файлами. В следующем примере показано, как создать [ссылку на узел DOM](/docs/refs-and-the-dom.html) для доступа к файлам в обработчике отправки:
79+
Вам следует использовать File API для взаимодействия с файлами. В следующем примере показано, как создать [реф на DOM-узел](/docs/refs-and-the-dom.html) для получения доступа к файлам в обработчике отправки:
8280

8381
`embed:uncontrolled-components/input-type-file.js`
8482

0 commit comments

Comments
 (0)