Skip to content

Commit

Permalink
View (#7)
Browse files Browse the repository at this point in the history
* view/README

* view

* Minor changes

* 06_control_flow.md

* view

* view

* view

* view

* view

* Style

* Style

* Style

* Style

* Style

* Style

* Style
  • Loading branch information
kakserpom authored Jun 29, 2024
1 parent f69b18d commit 8785088
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions src-russian/view/04b_iteration.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,11 +183,11 @@ pub fn App() -> impl IntoView {
}
```

Эта версия работает! И если вы посмотрите через DOM инспектор в вашем браузере, вы увидите, что в отличие от
предыдущей, в этой версии только отдельные текстовые узлы обновляются. Передача сигнала напрямую в `{child.value}`
работает, поскольку сигналы сохраняют свою реактивность если их передавать во view.
Эта версия работает! И если вы посмотрите через DOM инспектор в вашем браузере, то увидите, что в этой версии, в отличие от
предыдущей, лишь отдельные текстовые узлы обновляются. Передача сигнала напрямую в `{child.value}`
работает, поскольку сигналы остаются реактивными при передаче их во view.

Обратите внимание, я поменял `set_data.update()` на `data.with()`. `.with()` это способ получить доступ к значению сигнала,
Обратите внимание, я заменил `set_data.update()` на `data.with()`. `.with()` это способ получить доступ к значению сигнала,
не клонируя его. В данном случае мы лишь обновляем внутренние значение, не трогая список значений: поскольку сигналы имеют собственное состояние,
нам в действительности вовсе не нужно обновлять сигнал `data`, так что иммутабельный вызов `.with()` вполне подходит.

Expand All @@ -212,7 +212,7 @@ Leptos предоставляет примитив называемый [`create
Это позволяет создать реактивные значения для суб-полей крупной структуры данных, без
необходимости оборачивать поля этой структуры в сигналы.

Большая часть приложения может остаться неизменённой относительно первоначальной (сломанной) версии, но `<For/>` будет
Большая часть приложения может остаться неизменной относительно первоначальной (сломанной) версии, но `<For/>` будет
выглядеть так:

```rust
Expand All @@ -231,17 +231,17 @@ Leptos предоставляет примитив называемый [`create
```

Здесь вы заметите несколько отличий:
- мы конвертируем сигнала `data` в нумерующий итератор
- мы используем свойство `children` явным образом, чтобы упростить выполнение некоторого кода вне `view`
- мы создаем memo `value` и используем его и во view. Это поле `value`, на самом деле, не использует `child` передаваемое в каждый ряд.
- мы конвертируем сигнал `data` в нумерующий итератор
- мы используем свойство `children` явным образом, чтобы упростить выполнение кода вне `view`
- мы создаем memo `value` и используем его и во view. Это поле `value`, на самом деле, не использует значение `child` передаваемое в каждый ряд.
Вместо этого, оно использует индекс и обращается непосредственно к `data` чтобы получить значение.

Теперь, каждый раз, когда `data` меняется, каждое memo будет пересчитано. Если его значение изменилось, оно поменяет свой текстовый узел
без повторного рендеринга всего ряда.

### Преимущества

Мы получаем такую же мелко-зернистую реактивность, что и в версии с оборачиваем в сигналы, без необходимости оборачивать данные в сигналы.
Мы получаем ту же мелкозернистую реактивность, что и в версии с оборачиваем в сигналы, без необходимости оборачивать данные в сигналы.

### Недостатки

Expand Down

0 comments on commit 8785088

Please sign in to comment.