Skip to content

Commit 1952535

Browse files
committed
Resolve merge conflicts
1 parent 673cec0 commit 1952535

File tree

2 files changed

+0
-173
lines changed

2 files changed

+0
-173
lines changed

src/components/Layout/Feedback.tsx

Lines changed: 0 additions & 105 deletions
This file was deleted.

src/content/reference/react/useOptimistic.md

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -20,56 +20,28 @@ const [optimisticState, setOptimistic] = useOptimistic(value, reducer?);
2020
2121
### `useOptimistic(value, reducer?)` {/*useoptimistic*/}
2222
23-
<<<<<<< HEAD
24-
Хук `useOptimistic` дає змогу відображати змінений стан під час виконання асинхронної дії. Він приймає певний стан як аргумент і повертає його копію, яка може відрізнятися від переданого стану протягом виконання асинхронної дії, наприклад, мережевого запиту. Ви надаєте функцію, яка отримує поточний стан і вхідні дані для дії, та повертає "оптимістичний" стан, який буде використовуватися, поки дія триває.
25-
26-
Цей стан називається "оптимістичним", тому що зазвичай використовується, щоб показати користувачеві очікуваний результат одразу, навіть якщо на завершення дії потрібен певний час.
27-
=======
2823
Call `useOptimistic` at the top level of your component to create optimistic state for a value.
29-
>>>>>>> bd87c394dc1daf0e54759126f847fcfa927e5a75
3024
3125
```js
3226
import { useOptimistic } from 'react';
3327

34-
<<<<<<< HEAD
35-
function AppContainer() {
36-
const [optimisticState, addOptimistic] = useOptimistic(
37-
state,
38-
// updateFn
39-
(currentState, optimisticValue) => {
40-
// об'єднайте і поверніть новий стан
41-
// з оптимістичним значенням
42-
}
43-
);
44-
=======
4528
function MyComponent({name, todos}) {
4629
const [optimisticAge, setOptimisticAge] = useOptimistic(28);
4730
const [optimisticName, setOptimisticName] = useOptimistic(name);
4831
const [optimisticTodos, setOptimisticTodos] = useOptimistic(todos, todoReducer);
4932
// ...
50-
>>>>>>> bd87c394dc1daf0e54759126f847fcfa927e5a75
5133
}
5234
```
5335
5436
[Перегляньте більше прикладів нижче.](#usage)
5537
5638
#### Параметри {/*parameters*/}
5739
58-
<<<<<<< HEAD
59-
* `state`: значення, яке повертається на початку та щоразу, коли немає дії, що виконується.
60-
* `updateFn(currentState, optimisticValue)`: функція, яка приймає поточний стан і оптимістичне значення, передане до `addOptimistic`, та повертає розрахований оптимістичний стан. Повинна бути чистою функцією. `updateFn` приймає два параметри: `currentState` і `optimisticValue`. Функція повертає значення, створене через об'єднання `currentState` і `optimisticValue`.
61-
62-
=======
6340
* `value`: The value returned when there are no pending Actions.
6441
* **optional** `reducer(currentState, action)`: The reducer function that specifies how the optimistic state gets updated. It must be pure, should take the current state and reducer action arguments, and should return the next optimistic state.
65-
>>>>>>> bd87c394dc1daf0e54759126f847fcfa927e5a75
6642
6743
#### Результат {/*returns*/}
6844
69-
<<<<<<< HEAD
70-
* `optimisticState`: розрахований оптимістичний стан. Допоки немає дії, що виконується, він дорівнює `state`, інакше він дорівнює значенню, яке повертає `updateFn`.
71-
* `addOptimistic`: `addOptimistic` — це функція для надсилання змін (dispatching function), яку потрібно викликати для оптимістичного оновлення. Вона приймає один аргумент `optimisticValue` будь-якого типу та викликає `updateFn` із `state` і `optimisticValue`.
72-
=======
7345
`useOptimistic` returns an array with exactly two values:
7446
7547
1. `optimisticState`: The current optimistic state. It is equal to `value` unless an Action is pending, in which case it is equal to the state returned by `reducer` (or the value passed to the set function if no `reducer` was provided).
@@ -167,19 +139,11 @@ The `value` argument to `useOptimistic` determines what displays after the Actio
167139
If the Action throws an error, the Transition still ends, and React renders with whatever `value` currently is. Since the parent typically only updates `value` on success, a failure means `value` hasn't changed, so the UI shows what it showed before the optimistic update. You can catch the error to show a message to the user.
168140
169141
</DeepDive>
170-
>>>>>>> bd87c394dc1daf0e54759126f847fcfa927e5a75
171142
172143
---
173144
174145
## Використання {/*usage*/}
175146
176-
<<<<<<< HEAD
177-
### Оптимістичне оновлення форм {/*optimistically-updating-with-forms*/}
178-
179-
Хук `useOptimistic` дає змогу оптимістично оновлювати інтерфейс, поки завершується фонова операція, наприклад, мережевий запит. У контексті форм такий підхід створює відчуття швидшої реакції застосунків. Коли користувач надсилає форму, замість очікування відповіді від сервера для змін, інтерфейс одразу оновлюється і відображає очікуваний результат.
180-
181-
Наприклад, коли користувач вводить повідомлення у форму й натискає кнопку "Надіслати", хук `useOptimistic` дає змогу одразу відобразити це повідомлення у списку з позначкою "Надсилання...", ще до того, як воно реально буде відправлене на сервер. Такий "оптимістичний" підхід створює враження швидкодії та миттєвого відгуку інтерфейсу. Після цього форма справді намагається надіслати повідомлення у фоновому режимі. Коли сервер підтвердить, що повідомлення було отримано, позначка "Надсилання..." зникне.
182-
=======
183147
### Adding optimistic state to a component {/*adding-optimistic-state-to-a-component*/}
184148
185149
Call `useOptimistic` at the top level of your component to declare one or more optimistic states.
@@ -242,7 +206,6 @@ For an example, see: [Using optimistic state in Action props](#using-optimistic-
242206
In an [Action prop](/reference/react/useTransition#exposing-action-props-from-components), you can call the optimistic setter directly without `startTransition`.
243207
244208
This example sets optimistic state inside a `<form>` `submitAction` prop:
245-
>>>>>>> bd87c394dc1daf0e54759126f847fcfa927e5a75
246209
247210
<Sandpack>
248211
@@ -657,36 +620,6 @@ export default function TodoList({ todos, addTodoAction }) {
657620
}
658621

659622
return (
660-
<<<<<<< HEAD
661-
<>
662-
<form action={formAction} ref={formRef}>
663-
<input type="text" name="message" placeholder="Вітаю!" />
664-
<button type="submit">Надіслати</button>
665-
</form>
666-
{optimisticMessages.map((message, index) => (
667-
<div key={index}>
668-
{message.text}
669-
{!!message.sending && <small> (Надсилання...)</small>}
670-
</div>
671-
))}
672-
673-
</>
674-
);
675-
}
676-
677-
export default function App() {
678-
const [messages, setMessages] = useState([
679-
{ text: "Привіт!", sending: false, key: 1 }
680-
]);
681-
async function sendMessageAction(formData) {
682-
const sentMessage = await deliverMessage(formData.get("message"));
683-
startTransition(() => {
684-
setMessages((messages) => [{ text: sentMessage }, ...messages]);
685-
})
686-
}
687-
return <Thread messages={messages} sendMessageAction={sendMessageAction} />;
688-
}
689-
=======
690623
<div>
691624
<button onClick={() => handleAddTodo('New todo')}>Add Todo</button>
692625
<ul>
@@ -699,7 +632,6 @@ export default function App() {
699632
</div>
700633
);
701634
}
702-
>>>>>>> bd87c394dc1daf0e54759126f847fcfa927e5a75
703635
```
704636
705637
```js src/actions.js hidden

0 commit comments

Comments
 (0)