Skip to content

Commit 5cbaa2a

Browse files
committed
Resolved merge conflicts
1 parent 95f72fd commit 5cbaa2a

File tree

7 files changed

+169
-317
lines changed

7 files changed

+169
-317
lines changed

package.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,7 @@
3535
"classnames": "^2.2.6",
3636
"debounce": "^1.2.1",
3737
"github-slugger": "^1.3.0",
38-
<<<<<<< HEAD
39-
"next": "15.4.8",
40-
=======
4138
"next": "15.1.12",
42-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
4339
"next-remote-watch": "^1.0.0",
4440
"parse-numeric-range": "^1.2.0",
4541
"react": "^19.0.0",

src/content/learn/thinking-in-react.md

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
---
23
title: Філасофія React
34
---
@@ -37,14 +38,8 @@ JSON API вяртае даныя, якія выглядаюць наступны
3738

3839
Вы можаце падыходзіць да разбівання дызайну на кампаненты па-рознаму, асноўваючыся на вашым досведзе:
3940

40-
<<<<<<< HEAD
41-
=======
4241
* **Programming**--use the same techniques for deciding if you should create a new function or object. One such technique is the [separation of concerns](https://en.wikipedia.org/wiki/Separation_of_concerns), that is, a component should ideally only be concerned with one thing. If it ends up growing, it should be decomposed into smaller subcomponents.
43-
* **CSS**--consider what you would make class selectors for. (However, components are a bit less granular.)
44-
* **Design**--consider how you would organize the design's layers.
45-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
46-
47-
* **Праграмаванне**--выкарыстоўвайце той жа падыход, што і пры стварэнні простай функцыі або аб'екта. Можна прымяніць [прынцып адзінай адказнасці:](https://be.wikipedia.org/wiki/%D0%9F%D1%80%D1%8B%D0%BD%D1%86%D1%8B%D0%BF_%D0%B0%D0%B4%D0%B7%D1%96%D0%BD%D0%B0%D0%B9_%D0%B0%D0%B4%D0%BA%D0%B0%D0%B7%D0%BD%D0%B0%D1%81%D1%86%D1%96) гэта значыць, што ў ідэале кампанент павінен займацца нейкай адной задачай. Калі функцыянальнасць кампанента павялічваецца з цягам часу, яго варта разбіць на драбнейшыя падкампаненты.
42+
* **Праграмаванне**--выкарыстоўвайце той жа падыход, што і пры стварэнні простай функцыі або аб'екта. Можна прымяніць [падзяленне адказнасці:](https://en.wikipedia.org/wiki/Separation_of_concerns) гэта значыць, што ў ідэале кампанент мусіць быць адказнымза нешта адно. Калі функцыянальнасць кампанента павялічваецца з цягам часу, яго варта разбіць на драбнейшыя падкампаненты.
4843
* **CSS**--падумайце, для чаго б вы зрабілі селектары класаў (аднак памятайце, што кампаненты крыху менш дэтальныя).
4944
* **Дызайн**--падумайце, як бы вы арганізавалі слаі дызайну.
5045

src/content/learn/typescript.md

Lines changed: 9 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,16 @@ TypeScript — папулярны спосаб дадаць тыпізацыю
1111

1212
<YouWillLearn>
1313

14-
<<<<<<< HEAD
1514
* [TypeScript з кампанентамі React](/learn/typescript#typescript-with-react-components)
1615
* [Прыклад тыпізацыі хукаў](/learn/typescript#example-hooks)
17-
* [Агульныя тыпы з `@types/react`](/learn/typescript/#useful-types)
18-
* [Іншыя рэсурсы для вывучэння](/learn/typescript/#further-learning)
19-
=======
20-
* [TypeScript with React Components](/learn/typescript#typescript-with-react-components)
21-
* [Examples of typing with Hooks](/learn/typescript#example-hooks)
22-
* [Common types from `@types/react`](/learn/typescript#useful-types)
23-
* [Further learning locations](/learn/typescript#further-learning)
24-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
16+
* [Агульныя тыпы з `@types/react`](/learn/typescript#useful-types)
17+
* [Іншыя рэсурсы для вывучэння](/learn/typescript#further-learning)
2518

2619
</YouWillLearn>
2720

2821
## Усталёўка {/*installation*/}
2922

30-
<<<<<<< HEAD
31-
Усе [React фрэймворкі, гатовыя для выкарыстання ў працоўным асяроддзі](/learn/start-a-new-react-project#production-grade-react-frameworks) прапануюць падтрымку TypeScript. Для кожнага фрэймворка трымайцеся ягоных уласных інструкцый:
32-
=======
33-
All [production-grade React frameworks](/learn/creating-a-react-app#full-stack-frameworks) offer support for using TypeScript. Follow the framework specific guide for installation:
34-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
23+
Усе [React фрэймворкі, гатовыя для выкарыстання ў працоўным асяроддзі](/learn/creating-a-react-app#full-stack-frameworks) прапануюць падтрымку TypeScript. Для кожнага фрэймворка трымайцеся ягоных уласных інструкцый:
3524

3625
- [Next.js](https://nextjs.org/docs/app/building-your-application/configuring/typescript)
3726
- [Remix](https://remix.run/docs/en/1.19.2/guides/typescript)
@@ -48,15 +37,9 @@ npm install --save-dev @types/react @types/react-dom
4837

4938
Ваш `tsconfig.json` мае змяшчаць наступныя налады:
5039

51-
<<<<<<< HEAD
5240
1. `dom` мае быць уключанае ў [`lib`](https://www.typescriptlang.org/tsconfig/#lib) (Заўвага: калі значэнне для `lib` не зададзенае, `dom` прадвызначана уключанае).
53-
1. [`jsx`](https://www.typescriptlang.org/tsconfig/#jsx) мае мець любое валіднае значэнне. `preserve` мае падыходзіць для большасці выпадкаў.
41+
2. [`jsx`](https://www.typescriptlang.org/tsconfig/#jsx) мае мець любое валіднае значэнне. `preserve` мае падыходзіць для большасці выпадкаў.
5442
Калі вы публікуеце бібліятэку, звярніцеся да [дакументацыі па полю `jsx`](https://www.typescriptlang.org/tsconfig/#jsx) каб падабраць правільнае значэнне.
55-
=======
56-
1. `dom` must be included in [`lib`](https://www.typescriptlang.org/tsconfig/#lib) (Note: If no `lib` option is specified, `dom` is included by default).
57-
2. [`jsx`](https://www.typescriptlang.org/tsconfig/#jsx) must be set to one of the valid options. `preserve` should suffice for most applications.
58-
If you're publishing a library, consult the [`jsx` documentation](https://www.typescriptlang.org/tsconfig/#jsx) on what value to choose.
59-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
6043

6144
## TypeScript з кампанентамі React {/*typescript-with-react-components*/}
6245

@@ -141,11 +124,7 @@ export default App = AppTSX;
141124

142125
## Прыклады хукаў {/*example-hooks*/}
143126

144-
<<<<<<< HEAD
145-
Апісанні тыпаў у `@types/react` уключае таксама і тыпізацыю ўбудаваных хукаў, таму вы можаце выкарыстоўваць іх у сваіх кампанентах без дадатковай налады. Яны пабудаваныя такім чынам, каб улічваць код, ужо напісаны ў кампаненце, такім чынам вы атрымаеце [аўтаматычна вызначаныя тыпы](https://www.typescriptlang.org/docs/handbook/type-inference.html) і ў большасці выпадкаў вам не давядзецца разбірацца з дробнай тыпізацыяй самастойна.
146-
=======
147-
The type definitions from `@types/react` include types for the built-in Hooks, so you can use them in your components without any additional setup. They are built to take into account the code you write in your component, so you will get [inferred types](https://www.typescriptlang.org/docs/handbook/type-inference.html) a lot of the time and ideally do not need to handle the minutiae of providing the types.
148-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
127+
Апісанні тыпаў у `@types/react` уключае таксама і тыпізацыю ўбудаваных хукаў, таму вы можаце выкарыстоўваць іх у сваіх кампанентах без дадатковай налады. Яны пабудаваныя такім чынам, каб улічваць код, ужо напісаны ў кампаненце, такім чынам вы атрымаеце [аўтаматычна вызначаныя тыпы](https://www.typescriptlang.org/docs/handbook/type-inference.html) і ў большасці выпадкаў вам не давядзецца разбірацца з дробнай тыпізацыяй самастойна.
149128

150129
Але далей мы разгледзім некалькі прыкладаў, як тыпізаваць хукі.
151130

@@ -160,13 +139,8 @@ const [enabled, setEnabled] = useState(false);
160139

161140
Для `enabled` будзе вызначаны тып `boolean`, а `setEnabled` будзе прымаць або `boolean`, або функцыю, якая вяртае `boolean`. Калі вы хочаце відавочна перадаць тып для вашага стану, вы можаце зрабіць гэта, паказаўшы тып аргумента пры выкліку `useState`:
162141

163-
<<<<<<< HEAD
164-
```ts
165-
// Тып відавочна зададзены як boolean
166-
=======
167142
```ts
168-
// Explicitly set the type to "boolean"
169-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
143+
// Тып відавочна зададзены як boolean
170144
const [enabled, setEnabled] = useState<boolean>(false);
171145
```
172146

@@ -310,11 +284,7 @@ export default App = AppTSX;
310284

311285
</Sandpack>
312286

313-
<<<<<<< HEAD
314287
Дадзеная тэхніка працуе калі маецца прадвызначанае значэнне, якое мае сэнс, але бываюць сітуацыі, калі такога няма. У такім выпадку разумна будзе скарыстацца `null` у якасці прадвызначанага значэння. Але каб сістэме тыпізацыі было зразумела, трэба відавочна ўказаць тып `ContextShape | null` для `createContext`.
315-
=======
316-
This technique works when you have a default value which makes sense - but there are occasionally cases when you do not, and in those cases `null` can feel reasonable as a default value. However, to allow the type-system to understand your code, you need to explicitly set `ContextShape | null` on the `createContext`.
317-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
318288

319289
Разам з тым з’яўляецца патрэба выключаць `| null` пры атрыманні значэння. Мы раім дадаць у хук праверку, якая будзе падчас выканання правяраць наяўнасць значэння і выкідваць памылку пры яго адсутнасці:
320290

@@ -359,17 +329,13 @@ function MyComponent() {
359329

360330
### `useMemo` {/*typing-usememo*/}
361331

362-
<<<<<<< HEAD
363-
[Хук `useMemo`](/reference/react/useMemo) дапамагае ствараць і паўторна атрымліваць доступ да запомненых вынікаў запуску функцыі. Функцыя будзе выконвацца наноў толькі ў выпадках, калі зменіцца залежнае значэнне, перададзенае другім параметрам. Вынік выкліку функцыі будзе аўтаматычна тыпізаваны адпаведна функцыі, што была перададзеная першым параметрам. Вы можаце тыпізаваць хук відавочна, перадаўшы яму тып.
364-
=======
365332
<Note>
366333

367334
[React Compiler](/learn/react-compiler) automatically memoizes values and functions, reducing the need for manual `useMemo` calls. You can use the compiler to handle memoization automatically.
368335

369336
</Note>
370337

371-
The [`useMemo`](/reference/react/useMemo) Hooks will create/re-access a memorized value from a function call, re-running the function only when dependencies passed as the 2nd parameter are changed. The result of calling the Hook is inferred from the return value from the function in the first parameter. You can be more explicit by providing a type argument to the Hook.
372-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
338+
[Хук `useMemo`](/reference/react/useMemo) дапамагае ствараць і паўторна атрымліваць доступ да запомненых вынікаў запуску функцыі. Функцыя будзе выконвацца наноў толькі ў выпадках, калі зменіцца залежнае значэнне, перададзенае другім параметрам. Вынік выкліку функцыі будзе аўтаматычна тыпізаваны адпаведна функцыі, што была перададзеная першым параметрам. Вы можаце тыпізаваць хук відавочна, перадаўшы яму тып.
373339

374340
```ts
375341
// Тып visibleTodos вызначаны аўтаматычна з тыпу значэння, што вяртае функцыя filterTodos
@@ -379,17 +345,13 @@ const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
379345

380346
### `useCallback` {/*typing-usecallback*/}
381347

382-
<<<<<<< HEAD
383-
[Хук `useCallback`](/reference/react/useCallback) забяспечвае стабільную спасылку на функцыю пакуль залежнасці, перададзеныя другім параметрам, не змяняюцца. Як і `useMemo`, тып функцыі вызначаецца па тыпе функцыі, што перададзеная першым параметрам, але болей відавочна ўказаць тып можна перадаўшы яго ў хук.
384-
=======
385348
<Note>
386349

387350
[React Compiler](/learn/react-compiler) automatically memoizes values and functions, reducing the need for manual `useCallback` calls. You can use the compiler to handle memoization automatically.
388351

389352
</Note>
390353

391-
The [`useCallback`](/reference/react/useCallback) provide a stable reference to a function as long as the dependencies passed into the second parameter are the same. Like `useMemo`, the function's type is inferred from the return value of the function in the first parameter, and you can be more explicit by providing a type argument to the Hook.
392-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
354+
[Хук `useCallback`](/reference/react/useCallback) забяспечвае стабільную спасылку на функцыю пакуль залежнасці, перададзеныя другім параметрам, не змяняюцца. Як і `useMemo`, тып функцыі вызначаецца па тыпе функцыі, што перададзеная першым параметрам, але болей відавочна ўказаць тып можна перадаўшы яго ў хук.
393355

394356

395357
```ts
@@ -400,11 +362,7 @@ const handleClick = useCallback(() => {
400362

401363
Пры працы з TypeScript у строгім рэжыме, `useCallback` патрабуе дадатковай тыпізацыі параметраў функцыі. Гэта таму што тып функцыі вызначаны па тыпе вяртаемага значэння і не можа быць цалкам зразумелым.
402364

403-
<<<<<<< HEAD
404-
У залежнасці ад вашых пераваг у стылі кода, вы можаце выкарыстоўваць функцыі `*EventHandler` з тыпаў React для забеспячэння тыпізацыі апрацоўшчыкаў падзей прама падчас аб’яўлення:
405-
=======
406-
Depending on your code-style preferences, you could use the `*EventHandler` functions from the React types to provide the type for the event handler at the same time as defining the callback:
407-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
365+
У залежнасці ад вашых пераваг у стылі кода, вы можаце выкарыстоўваць функцыі `*EventHandler` з тыпаў React для забеспячэння тыпізацыі апрацоўшчыкаў падзей прама падчас аб’яўлення:
408366

409367
```ts
410368
import { useState, useCallback } from 'react';
@@ -487,11 +445,7 @@ interface ModalRendererProps {
487445
}
488446
```
489447

490-
<<<<<<< HEAD
491448
Заўважце, што немагчыма выкарыстоўваць TypeScript для апісання нейкага пэўнага элемента JSX. То-бок вы не можаце выкарыстоўваць сістэму тыпізацыі каб апісаць кампанент, які прымае, напрыклад, толькі даччыныя элементы `<li>`.
492-
=======
493-
Note, that you cannot use TypeScript to describe that the children are a certain type of JSX elements, so you cannot use the type-system to describe a component which only accepts `<li>` children.
494-
>>>>>>> a1cc2ab4bf06b530f86a7049923c402baf86aca1
495449

496450
Вы можаце пабачыць прыклады абодвух тыпаў `React.ReactNode` і `React.ReactElement` з праверкай тыпаў на [гэтай тэставай пляцоўцы TypeScript](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAJQKYEMDG8BmUIjgIilQ3wChSB6CxYmAOmXRgDkIATJOdNJMGAZzgwAFpxAR+8YADswAVwGkZMJFEzpOjDKw4AFHGEEBvUnDhphwADZsi0gFw0mDWjqQBuUgF9yaCNMlENzgAXjgACjADfkctFnYkfQhDAEpQgD44AB42YAA3dKMo5P46C2tbJGkvLIpcgt9-QLi3AEEwMFCItJDMrPTTbIQ3dKywdIB5aU4kKyQQKpha8drhhIGzLLWODbNs3b3s8YAxKBQAcwXpAThMaGWDvbH0gFloGbmrgQfBzYpd1YjQZbEYARkB6zMwO2SHSAAlZlYIBCdtCRkZpHIrFYahQYQD8UYYFA5EhcfjyGYqHAXnJAsIUHlOOUbHYhMIIHJzsI0Qk4P9SLUBuRqXEXEwAKKfRZcNA8PiCfxWACecAAUgBlAAacFm80W-CU11U6h4TgwUv11yShjgJjMLMqDnN9Dilq+nh8pD8AXgCHdMrCkWisVoAet0R6fXqhWKhjKllZVVxMcavpd4Zg7U6Qaj+2hmdG4zeRF10uu-Aeq0LBfLMEe-V+T2L7zLVu+FBWLdLeq+lc7DYFf39deFVOotMCACNOCh1dq219a+30uC8YWoZsRyuEdjkevR8uvoVMdjyTWt4WiSSydXD4NqZP4AymeZE072ZzuUeZQKheQgA).
497451

0 commit comments

Comments
 (0)