@@ -4,22 +4,22 @@ title: Хурдан Эхлэх
44
55<Intro >
66
7- React documentation-д тавтай морил! Энэ хуудсанд таны өдөр тутам хэрэглэх React-ийн 80%-ийн ойлголтуудыг танилцуулах болно .
7+ React-ийн баримт бичигт тавтай морил! Энэ хуудсаар та өдөр тутам ашиглах React-ийн ойлголтуудын 80%-тай танилцана .
88
99</Intro >
1010
1111<YouWillLearn >
1212
13- - Хэрхэн компонент бүтээж нэгтгэх
14- - Хэрхэн Markup болон styles нэмэх
13+ - Хэрхэн компонент үүсгэж, нэгтгэх
14+ - Хэрхэн markup болон загвар нэмэх
1515- Хэрхэн өгөгдөл харуулах
1616- Хэрхэн нөхцөл болон жагсаалт нэмэх
1717- Үйл явдалд хэрхэн хариу үйлдэл үзүүлж дэлгэцийг шинэчлэх
1818- Хэрхэн компонент хооронд өгөгдөл хуваалцах
1919
2020</YouWillLearn >
2121
22- ## Хэрхэн компонент бүтээж нэгтгэх вэ {/* components* /}
22+ ## Хэрхэн компонент үүсгэж, нэгтгэх вэ {/* components* /}
2323
2424React аппууд нь * компонент* -уудаас буюу бүтэц хэсгүүдээс бүтдэг. Компонент гэдэг нь өөрийн гэсэн логик, харагдах байдалтай UI (user interface) хэсэг юм. Компонент нь жижигхэн товч эсвэл бүтэн хуудас ч байж болдог.
2525
@@ -33,7 +33,7 @@ function MyButton() {
3333}
3434```
3535
36- Ингэснээр та өөрийн товч болох ` MyButton ` -ыг зарлачихлаа, Одоо үүнийг өөр нэг компонентд нэгтгэж үзье :
36+ Ингэснээр та ` MyButton ` нэртэй товч компонентоо зарлалаа. Одоо үүнийг өөр компонент дотор ашиглая :
3737
3838``` js {5}
3939export default function MyApp () {
@@ -46,7 +46,7 @@ export default function MyApp() {
4646}
4747```
4848
49- Компонент нэгтгэх, зарлах нь том үсгээр эхлэж байгааг анзаараарай ` <MyButton /> ` . Ингэснээр та үүнийг React component гэж таних боломжтой . React component нь заавал том үсгээр эхлэх ёстой ба HTML tag-ууд нь жижиг үсэг байх ёстой гэдгийг санаарай.
49+ ` <MyButton /> ` том үсгээр эхэлж байгааг анзаараарай. Ингэснээр React үүнийг компонент гэж танина . React компонентийн нэр заавал том үсгээр, харин HTML tag жижиг үсгээр эхлэх ёстойг санаарай.
5050
5151Одоо үр дүнг нь үзье:
5252
@@ -73,13 +73,13 @@ export default function MyApp() {
7373
7474</Sandpack >
7575
76- ` export default ` нь файлын үндсэн компонентийг зааж өгдөг. Хэрэв JavaScript syntax талаар ойлголтгүй бол, [ MDN] ( https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export ) , [ javascript.info] ( https://javascript.info/import-export ) сайтаар зочилж мэдээлэл аваарай .
76+ ` export default ` нь файлын үндсэн компонентийг зааж өгдөг. Хэрэв JavaScript-ийн энэ syntax-ийн талаар сайн мэдэхгүй бол [ MDN] ( https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export ) болон [ javascript.info] ( https://javascript.info/import-export ) сайтаас дэлгэрүүлэн уншаарай .
7777
7878## JSX ашиглан markup бичих нь {/* writing-markup-with-jsx* /}
7979
80- Markup syntax нь таны харж байгаачлан * JSX* гэж нэрлэгддэг. Ашиглах эсэх нь таны дур боловч ихэнх React төслүүд тохиромжтой байх үүднээс JSX ашигладаг. Мөн бүх [ local хөгжүүлэлтэнд санал болгох хэрэгслүүд] ( /learn/installation ) нь JSX-г дэмждэг юм.
80+ Markup syntax нь таны харж байгаачлан * JSX* гэж нэрлэгддэг. Ашиглах эсэх нь таны дур боловч ихэнх React төслүүд тохиромжтой байх үүднээс JSX ашигладаг. Мөн бүх [ local хөгжүүлэлтэд санал болгох хэрэгслүүд] ( /learn/installation ) нь JSX-г дэмждэг юм.
8181
82- JSX нь HTML-ыг бодвол арай хатуу дүрэмтэй. Жишээ нь ` <br /> ` гэх мэт tag-уудыг хаах ёстой. Мөн компонент нь нэгээс дээш JSX tag буцааж болохгүй. Аль нэг parent-д оруулах хэрэгтэй, жишээ нь ` <div>...</div> ` эсвэл хоосон ` <>...</> ` гэх wrapper-т:
82+ JSX нь HTML-ыг бодвол арай хатуу дүрэмтэй. Жишээ нь ` <br /> ` гэх мэт tag-уудыг хаах ёстой. Мөн компонент нь нэгээс дээш JSX tag буцааж болохгүй. Аль нэг parent-д оруулах хэрэгтэй, жишээ нь ` <div>...</div> ` эсвэл хоосон ` <>...</> ` wrapper-т:
8383
8484``` js {3,6}
8585function AboutPage () {
@@ -92,11 +92,11 @@ function AboutPage() {
9292}
9393` ` `
9494
95- Хэрэв танд JSX руу хувиргах HTML их байгаа бол, [online converter](https://transform.tools/html-to-jsx) хувиргагчыг ашиглаарай
95+ Хэрэв танд JSX руу хувиргах HTML их байгаа бол [online converter](https://transform.tools/html-to-jsx) хувиргагчийг ашиглаарай.
9696
9797## Загвар нэмэх нь (styles) {/*adding-styles*/}
9898
99- React дээр, та CSS class-аа ` className` гэж зааж өгөөрэй . Энэ нь HTML дээрхи [` class ` ](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/class)-тай ижил замаар ажилладаг. Жишээ нь:
99+ React дээр CSS class-аа ` className` гэж зааж өгнө . Энэ нь HTML-ийн [` class ` ](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/class)-тай ижил зарчмаар ажилладаг. Жишээ нь:
100100
101101` ` ` js
102102< img className= " avatar" / >
@@ -111,11 +111,11 @@ React дээр, та CSS class-аа `className` гэж зааж өгөөрэй.
111111}
112112` ` `
113113
114- React нь CSS файлуудыг хэрхэн нэмэхийг заадаггүй. Энгийнээр бол [` < link> ` ](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link) tag-ыг HTML дээрээ зааж өгж болно. Хэрэв тусгай хэрэглүүр эсвэл framework ашиглах бол тухайн заавар, documentation-ээс суулгаж ашиглах зааврыг олоорой.
114+ React нь CSS файлуудыг хэрхэн нэмэхийг заадаггүй. Энгийнээр бол [` < link> ` ](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link) tag-ыг HTML дээрээ зааж өгч болно. Хэрэв тусгай хэрэглүүр эсвэл framework ашиглах бол тухайн заавар, documentation-ээс суулгаж ашиглах зааврыг олоорой.
115115
116116## Өгөгдөл дүрслэх нь {/*displaying-data*/}
117117
118- JSX нь JavaScript дээр markup хийх боломжийг танд олгодог. Буржгар таныг Javascript-тэйгээ найзлахад чинь туслах ба ингэснээр та өөрийн кодоос зарим нэг хувьсагчийг оруулж, хэрэглэгчдэд харуулах боломжтой. Жишээлвэл доорхи код нь ` user .name ` -ийг дүрслэнэ :
118+ JSX нь JavaScript дотор markup бичих боломж олгодог. Угалзан хаалт ашиглан JavaScript руу шилжиж, кодын хувьсагчийг оруулан хэрэглэгчид харуулж болно. Жишээлбэл, доорх код ` user .name ` -ийг дүрсэлнэ :
119119
120120` ` ` js {3 }
121121return (
@@ -125,7 +125,7 @@ return (
125125);
126126` ` `
127127
128- Та мөн JSX аттрибутаас "JavaScript руу зугтаж " болно, гэхдээ та хашилтын оронд буржгар ашиглах хэрэгтэй . Жишээлбэл, ` className= " avatar" ` нь ` " avatar" ` мөрийг CSS class болгон дамжуулдаг боловч ` src= {user .imageUrl }` нь JavaScript ` user .imageUrl ` хувьсагчийн утгыг уншиж, дараа нь энэ утгыг ` src` атрибут байдлаар дамжуулдаг:
128+ Та мөн JSX атрибутаас "JavaScript руу шилжиж " болно. Үүний тулд хашилтын оронд угалзан хаалт ашиглана . Жишээлбэл, ` className= " avatar" ` нь ` " avatar" ` мөрийг CSS class болгон дамжуулдаг бол ` src= {user .imageUrl }` нь JavaScript-ийн ` user .imageUrl ` хувьсагчийн утгыг уншиж, ` src` атрибут болгон дамжуулдаг:
129129
130130` ` ` js {3 ,4 }
131131return (
@@ -136,7 +136,7 @@ return (
136136);
137137` ` `
138138
139- Та JSX буржгар хаалтанд үүнээс ч илүү төвөгтэй томъёо оруулж болно, жишээлбэл [string concatenation](https://javascript.info/operators#string-concatenation-with-binary):
139+ Та JSX-ийн угалзан хаалтад үүнээс ч илүү төвөгтэй илэрхийлэл оруулж болно. Жишээлбэл, [string concatenation](https://javascript.info/operators#string-concatenation-with-binary):
140140
141141
142142<Sandpack>
@@ -178,7 +178,7 @@ export default function Profile() {
178178
179179</Sandpack>
180180
181- Дээрхи жишээнд, ` style= {{}}` нь онцгой синтакс биш, харин ` style= { }` JSX буржгар хаалт доторх ердийн ` {}` объект юм. Таны загвар(style) JavaScript хувьсагчдаас хамаарах үед та ` style` атрибутыг ашиглаж болно.
181+ Дээрх жишээн дэх ` style= {{}}` нь онцгой syntax биш, харин ` style= { }` JSX угалзан хаалт доторх ердийн ` {}` объект юм. Таны загвар (style) JavaScript хувьсагчдаас хамаарах үед ` style` атрибутыг ашиглаж болно.
182182
183183
184184## Нөхцөлт дүрслэл {/*conditional-rendering*/}
@@ -305,7 +305,7 @@ function MyButton() {
305305
306306## Дэлгэц шинэчлэх нь {/*updating-the-screen*/}
307307
308- Зарим тохиолдолд та өөрийн зарим мэдээллийг "санаж", харуулах компонент үүсгэхийг хүсэж магадгүй. Жишээлбэл, та товчыг хэдэн удаа дарж байгааг тоолмоор байж болно. Үүнийг хийхийн тулд өөрийн компонентэд *state* нэмнэ.
308+ Зарим тохиолдолд та өөрийн зарим мэдээллийг "санаж", харуулах компонент үүсгэхийг хүсэж магадгүй. Жишээлбэл, та товчыг хэдэн удаа дарж байгааг тоолмоор байж болно. Үүнийг хийхийн тулд өөрийн компонентэд *төлөв* буюу * state* нэмнэ.
309309
310310Эхлээд React-аас [` useState` ](/reference/react/useState) импортлох хэрэгтэй:
311311
@@ -323,7 +323,7 @@ function MyButton() {
323323
324324Та ` useState` -ээс хоёр зүйлийг авах болно: одоогийн төлөв (` count` ) болон үүнийг шинэчлэх боломжийг олгодог функц (` setCount` ). Та тэдэнд ямар ч нэр өгч болно, гэхдээ дүрэм нь ` [yamarnegzvil, setYamarnegzvil]` гэж бичих юм.
325325
326- Товч анх үзэгдэх үед ` count` нь ` 0 ` байх болно, учир нь та ` useState ()` руу ` 0 ` -г дамжуулсан. Төлөвийг өөрчлөхийг хүсвэл ` setCount ()' -ыг дуудаж түүнд шинэ утгыг дамжуулаарай. Товчийг дарснаар тоолуур нэмэгдэнэ:
326+ Товч анх үзэгдэх үед ` count` нь ` 0 ` байх болно, учир нь та ` useState ()` руу ` 0 ` -г дамжуулсан. Төлөвийг өөрчлөхийг хүсвэл ` setCount ()` -ыг дуудаж түүнд шинэ утгыг дамжуулаарай. Товчийг дарснаар тоолуур нэмэгдэнэ:
327327
328328` ` ` js {5 }
329329function MyButton () {
@@ -343,7 +343,7 @@ function MyButton() {
343343
344344React таны компонентийн функцийг дахин дуудна. Товчин дээр дарах үед тоо нь ` 1 ` болно, дараа нь ` 2 ` болно гэх мэт.
345345
346- Хэрэв компонентоо 2 удаа дуудвал тус тус өөрийн төлөвтэй байх болно. Аль аль товчыг нь дараад үзээрэй
346+ Хэрэв компонентоо 2 удаа дуудвал тус тус өөрийн төлөвтэй байх болно. Аль аль товчыг нь дараад үзээрэй.
347347
348348<Sandpack>
349349
@@ -385,11 +385,11 @@ button {
385385</Sandpack>
386386
387387
388- Товч тус бүр өөрийн `тоолох` төлөвийг хэрхэн "санаж", нөгөө тоолуурдаа нөлөөлөхгүй байгааг анзаараарай.
388+ Товч тус бүр өөрийн ` тоолох` төлөвийг хэрхэн "санаж", нөгөө тоолууртаа нөлөөлөхгүй байгааг анзаараарай.
389389
390390## Hooks ашиглах нь {/*using-hooks*/}
391391
392- `use`-ээр эхэлсэн функцуудыг ерөнхийд нь *Hooks* гэж нэрлэдэг. Жишээ нь `useState` гэхэд React-ийн бэлдэж суурилуулсан Hook бөгөөд Бусад React-ийн бэлдэж суурилуулсан Hook-уудийг [API лавлагаа. ](/reference/react) дотроос олох боломжтой. Та мөн бэлдсэн Hook-уудийг ашиглан нэгтгэж өөрийн гэсэн hook бичих боломжтой.
392+ ` use` -ээр эхэлсэн функцуудыг ерөнхийд нь *Hooks* гэж нэрлэдэг. Жишээ нь ` useState` гэхэд React-ийн бэлдэж суурилуулсан Hook бөгөөд бусад React-ийн бэлдэж суурилуулсан Hook-уудыг [API лавлагаа](/reference/react) дотроос олох боломжтой. Та мөн бэлдсэн Hook-уудыг ашиглан нэгтгэж өөрийн гэсэн hook бичих боломжтой.
393393
394394Hooks нь бусад функцуудээ бодвол арай хязгаарлагдмал байдаг. Та hook дуудахдаа зөвхөн компонентийн дээд хэсэгт дуудах ёстой. Хэрэв та нөхцөл эсвэл давталтанд ` useState` -г ашиглахыг хүсвэл шинэ компонент задалж, тэнд байрлуулаарай.
395395
@@ -415,9 +415,7 @@ Hooks нь бусад функцуудээ бодвол арай хязгаар
415415
416416Гэсэн хэдий ч танд өгөгдөл хуваалцдаг, үргэлж хамт шинэчлэгддэг компонентууд хэрэг болно
417417
418- To make both `MyButton` components display the same `count` and update together, you need to move the state from the individual buttons "upwards" to the closest component containing all of them.
419-
420- Тусдаа орших хоёр `MyButton` компонентийн тоолуурийг ижил болгохын тулд, Тоолуурын функцээ хамгийн эхэнд байрлах буюу үндсэн компонентийн дотор байрлуулах хэрэгтэй.
418+ Хоёр ` MyButton` компонентод ижил ` count` харуулж, хамтад нь шинэчлэхийн тулд тус тусын товч доторх төлөвийг тэдгээрийг агуулдаг хамгийн ойрын компонент руу дээш шилжүүлэх хэрэгтэй.
421419
422420Доорхи жишээн дээр ` MyApp` компонент дотор байрлуулав:
423421
@@ -439,7 +437,7 @@ To make both `MyButton` components display the same `count` and update together,
439437
440438Одоо та аль нэг товч дээр дарахад ` MyApp` доторх ` count` төлөв өөрчлөгдөх бөгөөд энэ нь ` MyButton` -ий тоонуудыг хоёуланг нь өөрчлөх болно. Үүнийг кодоор хэрхэн илэрхийлж болохыг доорхи жишээнээс үзнэ үү.
441439
442- Эхлээд, *State ээ* `MyButton` дотроос авж `MyApp`- руу нүүлгье :
440+ Эхлээд *state*-ийг ` MyButton` дотроос ` MyApp` руу шилжүүлье :
443441
444442` ` ` js {2 - 6 ,18 }
445443export default function MyApp () {
@@ -500,10 +498,8 @@ function MyButton({ count, onClick }) {
500498}
501499` ` `
502500
503- When you click the button, the `onClick` handler fires. Each button' s ` onClick` prop was set to the ` handleClick` function inside `MyApp`, so the code inside of it runs. That code calls `setCount (count + 1 )`, incrementing the `count` state variable. The new `count` value is passed as a prop to each button, so they all show the new value. This is called "lifting state up". By moving state up, you've shared it between components.
504-
501+ Товчийг дарахад ` onClick` handler ажиллана. Товч бүрийн ` onClick` prop-ийг ` MyApp` доторх ` handleClick` функцээр тохируулсан тул уг функцийн код ажиллана. Тэр код ` setCount (count + 1 )` -ыг дуудаж, ` count` төлөвийн хувьсагчийг нэмэгдүүлнэ. Шинэ ` count` утгыг товч бүрт prop болгон дамжуулдаг тул бүгд шинэ утгыг харуулна. Үүнийг "төлөвийг дээш өргөх" (lifting state up) гэж нэрлэдэг. Ингэснээр төлөвийг компонентууд хоорондоо хуваалцана.
505502
506- Таныг товчин дээр дарах үед, `onClick` handler асах болно. Товч тус бүрийн`onClick` prop-ийг `MyApp` доторхи `handleClick` функцээр тохируулсан тул доторх код нь ажиллах юм. Энэ код нь `setCount(count + 1)`-ийг дуудах ба `count` төлөвийн хувьсагчийг нэмэгдүүлнэ. Шинэ `count` утгыг товч бүрт prop болгон дамжуулдаг тул бүгд шинэ утгыг харуулдаг. Үүнийг "төлөв өргөх(lifting state up)" гэж нэрлэнэ. Төлөвийг дээшлүүлснээр та үүнийг компонентуудын хооронд мэдээлэл хуваалцах юм.
507503<Sandpack>
508504
509505` ` ` js
0 commit comments