You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/docs/conditional-rendering.md
+13-13Lines changed: 13 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -8,9 +8,9 @@ redirect_from:
8
8
- "tips/false-in-jsx.html"
9
9
---
10
10
11
-
С React можно создать разные компоненты, инкапсулирующие поведение. Затем вы можете решить рендерить только некоторые из них по своему усмотрению в зависимости от состояния приложения.
11
+
React позволяет разделить логику на независимые компоненты. Эти компоненты можно показывать или прятать в зависимости от текущего состояния.
12
12
13
-
Условный рендеринг в React работает так же, как условные выражения работают в JavaScript. Чтобы создать элементы отражающие текущее состояние и позволить React обновить UI в соответствии с ними, используйте [условный оператор](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/%D0%A3%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80) JavaScript или выражения подобные [`if`](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/if...else).
13
+
Условный рендеринг в React работает так же, как условные выражения работают в JavaScript. Бывает нужно объяснить React, как состояние влияет на то, какие компоненты требуется скрыть, а какие — отрендерить, и как именно. В таких ситуациях используйте [условный оператор](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/%D0%A3%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80) JavaScript или выражения подобные [`if`](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/if...else), .
14
14
15
15
Рассмотрим два компонента:
16
16
@@ -20,11 +20,11 @@ function UserGreeting(props) {
20
20
}
21
21
22
22
functionGuestGreeting(props) {
23
-
return<h1>Залогиньтесь, пожалуйста.</h1>;
23
+
return<h1>Войдите, пожалуйста.</h1>;
24
24
}
25
25
```
26
26
27
-
Можно создать компонент `Greeting`, который отражает один из вышеуказанных компонентов в зависимости от того, залогинен пользователь или нет:
27
+
Можно создать компонент `Greeting`, который отражает один из этих компонентов в зависимости от того, на сайте пользователь или нет:
28
28
29
29
```javascript{3-7,11,12}
30
30
function Greeting(props) {
@@ -44,19 +44,19 @@ ReactDOM.render(
44
44
45
45
[**Посмотреть на CodePen**](https://codepen.io/gaearon/pen/ZpVxNq?editors=0011)
46
46
47
-
В этом примере рендерится различное приветствие в зависимости от значания пропа `isLoggedIn`.
47
+
В этом примере рендерится различное приветствие в зависимости от значения пропа `isLoggedIn`.
48
48
49
49
### Переменные-элементы {#element-variables}
50
50
51
-
Элементы React можно сохранять в переменных. Это может быть удобно, когда какое-то условие определяет, надо ли рендерить одну часть компонента или нет, тогда как другая часть компонента остаётся неизменной.
51
+
Элементы React можно сохранять в переменных. Это может быть удобно, когда какое-то условие определяет, надо ли рендерить одну часть компонента или нет, а другая часть компонента остаётся неизменной.
52
52
53
-
Рассмотрим ещё два компонента, представляющих кнопки Залогиниться (Login) и Выйти (Logout).
53
+
Рассмотрим ещё два компонента, представляющих кнопки Войти (Login) и Выйти (Logout).
54
54
55
55
```js
56
56
functionLoginButton(props) {
57
57
return (
58
58
<button onClick={props.onClick}>
59
-
Залогиниться
59
+
Войти
60
60
</button>
61
61
);
62
62
}
@@ -72,7 +72,7 @@ function LogoutButton(props) {
72
72
73
73
В следующем примере мы создадим [компонент с состоянием](/docs/state-and-lifecycle.html#adding-local-state-to-a-class) и назовём его `LoginControl`.
74
74
75
-
Он будет рендерить либо `<LoginButton />`, либо `<LogoutButton />`, в зависимости от текущего состояния. А также он будет всегда рендерить `<Greeting />` из предыдущего примера.
75
+
Он будет рендерить либо `<LoginButton />`, либо `<LogoutButton />`, в зависимости от текущего состояния. А ещё он будет всегда рендерить `<Greeting />` из предыдущего примера.
76
76
77
77
```javascript{20-25,29,30}
78
78
class LoginControl extends React.Component {
@@ -118,11 +118,11 @@ ReactDOM.render(
118
118
119
119
[**Посмотреть на CodePen**](https://codepen.io/gaearon/pen/QKzAgB?editors=0010)
120
120
121
-
И хотя объявление переменной и использование её в`if`-выражении это вполне рабочий вариант условного рендеринга, иногда вы можете предпочесть синтаксис покороче. Ниже объяснены несколько других способов встроить условия в JSX.
121
+
Нет ничего плохого в том, чтобы объявить переменную и условно рендерить компонент`if`-выражением. Но иногда хочется синтаксис покороче. Давайте посмотрим на несколько других способов писать условия прямо в JSX.
122
122
123
123
### Условное (if) встраивание с помощью логического оператора && {#inline-if-with-logical--operator}
124
124
125
-
Вы можете [внедрить любое выражение в JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx), просто заключив его в фигурные скобки. Это правило распространяется и на логический оператор `&&` языка JavaScript, который может оказаться удобным для условной вставки элемента:
125
+
Вы можете [внедрить любое выражение в JSX](/docs/introducing-jsx.html#embedding-expressions-in-jsx), просто заключив его в фигурные скобки. Это правило распространяется и на логический оператор `&&` языка JavaScript, которым можно удобно вставить элемент в зависимости от условния:
В редких случаях может потребоваться позволить компоненту спрятать себя, хотя он уже и отрендерен другим компонентом. Чтобы этого добиться, просто верните `null` вместо того, что обычно возвращается на рендеринг.
193
+
В редких случаях может потребоваться позволить компоненту спрятать себя, хотя он уже и отрендерен другим компонентом. Чтобы этого добиться, верните `null` вместо того, что обычно возвращается на рендеринг.
194
194
195
195
Например, будет ли содержимое `<WarningBanner />` отрендерено, зависит от значения пропа под именем `warn`. Если значение `false`, компонент ничего не рендерит:
0 commit comments