Skip to content

Commit e8257e9

Browse files
authored
Merge pull request #88 from reactjs/features/writing-markup-with-jsx
2 parents ed9e576 + 8a55eec commit e8257e9

File tree

2 files changed

+70
-70
lines changed

2 files changed

+70
-70
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ td {
438438
439439
</Sandpack>
440440
441-
Primetićete da promena forme još uvek ne radi. Pojavio se problem u konzoli u sandbox-u iznad koji objašnjava zašto:
441+
Primetićete da promena forme još uvek ne radi. Pojavila se greška u konzoli u sandbox-u iznad koji objašnjava zašto:
442442
443443
<ConsoleBlock level="error">
444444

src/content/learn/writing-markup-with-jsx.md

+69-69
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
---
2-
title: Writing Markup with JSX
2+
title: Pisanje markup-a sa JSX-om
33
---
44

55
<Intro>
66

7-
*JSX* is a syntax extension for JavaScript that lets you write HTML-like markup inside a JavaScript file. Although there are other ways to write components, most React developers prefer the conciseness of JSX, and most codebases use it.
7+
*JSX* je sintaksna ekstenzija za JavaScript koja vam omogućava da pišete markup sličan HTML-u unutar JavaScript fajla. Iako postoje i drugi načini za pisanje komponenata, većina React developera preferira sažetost JSX-a, pa se zato koristi na većini projekata.
88

99
</Intro>
1010

1111
<YouWillLearn>
1212

13-
* Why React mixes markup with rendering logic
14-
* How JSX is different from HTML
15-
* How to display information with JSX
13+
* Zašto React kombinuje markup i logiku renderovanja
14+
* Kako se JSX razlikuje od HTML-a
15+
* Kako da prikažete informacije pomoću JSX-a
1616

1717
</YouWillLearn>
1818

19-
## JSX: Putting markup into JavaScript {/*jsx-putting-markup-into-javascript*/}
19+
## JSX: Stavljanje markup-a unutar JavaScript-a {/*jsx-putting-markup-into-javascript*/}
2020

21-
The Web has been built on HTML, CSS, and JavaScript. For many years, web developers kept content in HTML, design in CSS, and logic in JavaScript—often in separate files! Content was marked up inside HTML while the page's logic lived separately in JavaScript:
21+
Web je izgrađen pomoću HTML-a, CSS-a i JavaScript-a. Godinama su web developeri čuvali sadržaj u HTML-u, dizajn u CSS-u, a logiku u JavaScript-u, i to često u odvojenim fajlovima! Sadržaj se nalazio unutar HTML-a, dok je logika živela odvojeno u JavaScript-u:
2222

2323
<DiagramGroup>
2424

@@ -36,53 +36,53 @@ JavaScript
3636

3737
</DiagramGroup>
3838

39-
But as the Web became more interactive, logic increasingly determined content. JavaScript was in charge of the HTML! This is why **in React, rendering logic and markup live together in the same place—components.**
39+
Kako je web postajao interaktivniji, logika je značajno određivala sadržaj. JavaScript je bio zadužen za HTML! Zato, **u React-u, logika renderovanja i markup žive zajedno na jednom mestu—u komponentama**.
4040

4141
<DiagramGroup>
4242

4343
<Diagram name="writing_jsx_sidebar" height={330} width={325} alt="React component with HTML and JavaScript from previous examples mixed. Function name is Sidebar which calls the function isLoggedIn, highlighted in yellow. Nested inside the function highlighted in purple is the p tag from before, and a Form tag referencing the component shown in the next diagram.">
4444

45-
`Sidebar.js` React component
45+
`Sidebar.js` React komponenta
4646

4747
</Diagram>
4848

4949
<Diagram name="writing_jsx_form" height={330} width={325} alt="React component with HTML and JavaScript from previous examples mixed. Function name is Form containing two handlers onClick and onSubmit highlighted in yellow. Following the handlers is HTML highlighted in purple. The HTML contains a form element with a nested input element, each with an onClick prop.">
5050

51-
`Form.js` React component
51+
`Form.js` React komponenta
5252

5353
</Diagram>
5454

5555
</DiagramGroup>
5656

57-
Keeping a button's rendering logic and markup together ensures that they stay in sync with each other on every edit. Conversely, details that are unrelated, such as the button's markup and a sidebar's markup, are isolated from each other, making it safer to change either of them on their own.
57+
Držanje logike renderovanja i markup-a za dugme na jednom mestu osigurava da će oni ostati sinhronizovani nakon svake promene. Nasuprot toga, detalji koji nisu povezani, kao što su markup-i za dugme i sidebar, izolovani su jedan od drugog, što omogućava lakšu promenu svakog od njih.
5858

59-
Each React component is a JavaScript function that may contain some markup that React renders into the browser. React components use a syntax extension called JSX to represent that markup. JSX looks a lot like HTML, but it is a bit stricter and can display dynamic information. The best way to understand this is to convert some HTML markup to JSX markup.
59+
Svaka React komponenta je JavaScript funkcija koja može sadržati markup koji će React renderovati u pretraživaču. React komponente koriste sintaksnu ekstenziju pod imenom JSX da bi predstavile taj markup. JSX veoma liči na HTML, ali je malo strožiji i može prikazati dinamičke podatke. Najbolji način da ovo razumete je da konvertujete neki HTML markup u JSX markup.
6060

6161
<Note>
6262

63-
JSX and React are two separate things. They're often used together, but you *can* [use them independently](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#whats-a-jsx-transform) of each other. JSX is a syntax extension, while React is a JavaScript library.
63+
JSX i React su dve odvojene stvari. Često se koriste zajedno, ali *možete* [ih koristiti odvojeno](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#whats-a-jsx-transform). JSX je sintaksna ekstenzija, dok je React JavaScript biblioteka.
6464

6565
</Note>
6666

67-
## Converting HTML to JSX {/*converting-html-to-jsx*/}
67+
## Konvertovanje HTML-a u JSX {/*converting-html-to-jsx*/}
6868

69-
Suppose that you have some (perfectly valid) HTML:
69+
Pretpostavimo da imate neki (potpuno validan) HTML:
7070

7171
```html
72-
<h1>Hedy Lamarr's Todos</h1>
72+
<h1>Hedy Lamarr-ina Todo lista</h1>
7373
<img
7474
src="https://i.imgur.com/yXOvdOSs.jpg"
7575
alt="Hedy Lamarr"
7676
class="photo"
7777
>
7878
<ul>
79-
<li>Invent new traffic lights
80-
<li>Rehearse a movie scene
81-
<li>Improve the spectrum technology
79+
<li>Izmisli nove semafore
80+
<li>Vežbaj scenu iz filma
81+
<li>Unapredi tehnologiju spektra
8282
</ul>
8383
```
8484

85-
And you want to put it into your component:
85+
I želite da ga pomerite u vašu komponentu:
8686

8787
```js
8888
export default function TodoList() {
@@ -92,25 +92,25 @@ export default function TodoList() {
9292
}
9393
```
9494

95-
If you copy and paste it as is, it will not work:
95+
Ako uradite samo copy/paste, to neće raditi:
9696

9797

9898
<Sandpack>
9999

100100
```js
101101
export default function TodoList() {
102102
return (
103-
// This doesn't quite work!
104-
<h1>Hedy Lamarr's Todos</h1>
103+
// Ovo baš i ne radi!
104+
<h1>Hedy Lamarr-ina Todo lista</h1>
105105
<img
106106
src="https://i.imgur.com/yXOvdOSs.jpg"
107107
alt="Hedy Lamarr"
108108
class="photo"
109109
>
110110
<ul>
111-
<li>Invent new traffic lights
112-
<li>Rehearse a movie scene
113-
<li>Improve the spectrum technology
111+
<li>Izmisli nove semafore
112+
<li>Vežbaj scenu iz filma
113+
<li>Unapredi tehnologiju spektra
114114
</ul>
115115
);
116116
}
@@ -122,25 +122,25 @@ img { height: 90px }
122122

123123
</Sandpack>
124124

125-
This is because JSX is stricter and has a few more rules than HTML! If you read the error messages above, they'll guide you to fix the markup, or you can follow the guide below.
125+
To je zato što je JSX strožiji i ima par pravila više od HTML-a! Ako pročitate poruke o greškama iznad, uputiće vas kako da popravite markup. Takođe, možete pratiti i uputstvo ispod.
126126

127127
<Note>
128128

129-
Most of the time, React's on-screen error messages will help you find where the problem is. Give them a read if you get stuck!
129+
U većini slučajeva, React-ove poruke o greškama će vam pomoći da pronađete u čemu je problem. Pročitajte ih ako se zaglavite!
130130

131131
</Note>
132132

133-
## The Rules of JSX {/*the-rules-of-jsx*/}
133+
## Pravila JSX-a {/*the-rules-of-jsx*/}
134134

135-
### 1. Return a single root element {/*1-return-a-single-root-element*/}
135+
### 1. Vratite jedan root element {/*1-return-a-single-root-element*/}
136136

137-
To return multiple elements from a component, **wrap them with a single parent tag.**
137+
Da biste vratili više elemenata iz komponente, **zamotajte ih u jedan roditeljski tag**.
138138

139-
For example, you can use a `<div>`:
139+
Na primer, možete koristiti `<div>`:
140140

141141
```js {1,11}
142142
<div>
143-
<h1>Hedy Lamarr's Todos</h1>
143+
<h1>Hedy Lamarr-ina Todo lista</h1>
144144
<img
145145
src="https://i.imgur.com/yXOvdOSs.jpg"
146146
alt="Hedy Lamarr"
@@ -153,11 +153,11 @@ For example, you can use a `<div>`:
153153
```
154154

155155

156-
If you don't want to add an extra `<div>` to your markup, you can write `<>` and `</>` instead:
156+
Ako ne želite da dodate novi `<div>` u vaš markup, možete umesto toga koristiti `<>` i `</>`:
157157

158158
```js {1,11}
159159
<>
160-
<h1>Hedy Lamarr's Todos</h1>
160+
<h1>Hedy Lamarr-ina Todo lista</h1>
161161
<img
162162
src="https://i.imgur.com/yXOvdOSs.jpg"
163163
alt="Hedy Lamarr"
@@ -169,21 +169,21 @@ If you don't want to add an extra `<div>` to your markup, you can write `<>` and
169169
</>
170170
```
171171

172-
This empty tag is called a *[Fragment.](/reference/react/Fragment)* Fragments let you group things without leaving any trace in the browser HTML tree.
172+
Ovaj prazan tag se naziva *[Fragment](/reference/react/Fragment)*. Fragmenti vam omogućavaju da grupišete stvari bez uticaja na HTML stablo u pretraživaču.
173173

174174
<DeepDive>
175175

176-
#### Why do multiple JSX tags need to be wrapped? {/*why-do-multiple-jsx-tags-need-to-be-wrapped*/}
176+
#### Zašto morate zamotati više JSX tag-ova? {/*why-do-multiple-jsx-tags-need-to-be-wrapped*/}
177177

178-
JSX looks like HTML, but under the hood it is transformed into plain JavaScript objects. You can't return two objects from a function without wrapping them into an array. This explains why you also can't return two JSX tags without wrapping them into another tag or a Fragment.
178+
JSX liči na HTML, ali je ispod haube transformisan u obične JavaScript objekte. Ne možete vratiti dva objekta iz funkcije ako ih ne zamotate u niz. Ovo takođe objašnjava i zašto ne možete vratiti dva JSX tag-a bez da ih zamotate u drugi tag ili Fragment.
179179

180180
</DeepDive>
181181

182-
### 2. Close all the tags {/*2-close-all-the-tags*/}
182+
### 2. Zatvorite sve tag-ove {/*2-close-all-the-tags*/}
183183

184-
JSX requires tags to be explicitly closed: self-closing tags like `<img>` must become `<img />`, and wrapping tags like `<li>oranges` must be written as `<li>oranges</li>`.
184+
JSX zahteva da svi tag-ovi budu eksplicitno zatvoreni: samozatvarajući tag-ovi kao što je `<img>` moraju postati `<img />`, a obmotavajući tag-ovi poput `<li>pomorandže` moraju biti napisani kao `<li>pomorandže</li>`.
185185

186-
This is how Hedy Lamarr's image and list items look closed:
186+
Ovako izgledaju Hedy Lamarr-ina slika i lista zatvoreni:
187187

188188
```js {2-6,8-10}
189189
<>
@@ -193,18 +193,18 @@ This is how Hedy Lamarr's image and list items look closed:
193193
class="photo"
194194
/>
195195
<ul>
196-
<li>Invent new traffic lights</li>
197-
<li>Rehearse a movie scene</li>
198-
<li>Improve the spectrum technology</li>
196+
<li>Izmisli nove semafore</li>
197+
<li>Vežbaj scenu iz filma</li>
198+
<li>Unapredi tehnologiju spektra</li>
199199
</ul>
200200
</>
201201
```
202202

203-
### 3. camelCase <s>all</s> most of the things! {/*3-camelcase-salls-most-of-the-things*/}
203+
### 3. Koristite camelCase za <s>sve</s> većinu stvari! {/*3-camelcase-salls-most-of-the-things*/}
204204

205-
JSX turns into JavaScript and attributes written in JSX become keys of JavaScript objects. In your own components, you will often want to read those attributes into variables. But JavaScript has limitations on variable names. For example, their names can't contain dashes or be reserved words like `class`.
205+
JSX se pretvara u JavaScript i atributi napisani u JSX-u postaju ključevi za JavaScript objekte. U vašim komponentama, često ćete želeti da pročitate te atribute u promenljive. Ali JavaScript ima ograničenja za imena promenljivih. Na primer, imena ne mogu sadržati crtice ili rezervisane reči kao što je `class`.
206206

207-
This is why, in React, many HTML and SVG attributes are written in camelCase. For example, instead of `stroke-width` you use `strokeWidth`. Since `class` is a reserved word, in React you write `className` instead, named after the [corresponding DOM property](https://developer.mozilla.org/en-US/docs/Web/API/Element/className):
207+
Zato se, u React-u, većina HTML i SVG atributa pišu u camelCase-u. Na primer, umesto `stroke-width` koristićete `strokeWidth`. Pošto je `class` rezervisana reč, u React-u ćete pisati `className`, koji je nastao na osnovu [odgovarajućeg polja u DOM-u](https://developer.mozilla.org/en-US/docs/Web/API/Element/className):
208208

209209
```js {4}
210210
<img
@@ -214,36 +214,36 @@ This is why, in React, many HTML and SVG attributes are written in camelCase. Fo
214214
/>
215215
```
216216

217-
You can [find all these attributes in the list of DOM component props.](/reference/react-dom/components/common) If you get one wrong, don't worry—React will print a message with a possible correction to the [browser console.](https://developer.mozilla.org/docs/Tools/Browser_Console)
217+
Možete [pronaći sve te atribute u listi props-a DOM komponente](/reference/react-dom/components/common). Ako neki i pogrešite, ne brinite—React će napisati poruku sa mogućom ispravkom u [konzoli pretraživača](https://developer.mozilla.org/docs/Tools/Browser_Console).
218218

219219
<Pitfall>
220220

221-
For historical reasons, [`aria-*`](https://developer.mozilla.org/docs/Web/Accessibility/ARIA) and [`data-*`](https://developer.mozilla.org/docs/Learn/HTML/Howto/Use_data_attributes) attributes are written as in HTML with dashes.
221+
Iz istorijskih razloga, [`aria-*`](https://developer.mozilla.org/docs/Web/Accessibility/ARIA) i [`data-*`](https://developer.mozilla.org/docs/Learn/HTML/Howto/Use_data_attributes) atributi se pišu sa crticama kao i u HTML-u.
222222

223223
</Pitfall>
224224

225-
### Pro-tip: Use a JSX Converter {/*pro-tip-use-a-jsx-converter*/}
225+
### Pro-savet: Koristite JSX konverter {/*pro-tip-use-a-jsx-converter*/}
226226

227-
Converting all these attributes in existing markup can be tedious! We recommend using a [converter](https://transform.tools/html-to-jsx) to translate your existing HTML and SVG to JSX. Converters are very useful in practice, but it's still worth understanding what is going on so that you can comfortably write JSX on your own.
227+
Konvertovanje svih tih atributa u postojeći markup može biti naporno! Preporučujemo vam da koristite [konverter](https://transform.tools/html-to-jsx) za pretvaranje postojećeg HTML-a i SVG-a u JSX. Konverteri su veoma zgodni u praksi, ali je i dalje važno da razumete šta se događa kako biste lagodno mogli da pišete JSX.
228228

229-
Here is your final result:
229+
Ovo je konačni rezultat:
230230

231231
<Sandpack>
232232

233233
```js
234234
export default function TodoList() {
235235
return (
236236
<>
237-
<h1>Hedy Lamarr's Todos</h1>
237+
<h1>Hedy Lamarr-ina Todo lista</h1>
238238
<img
239239
src="https://i.imgur.com/yXOvdOSs.jpg"
240240
alt="Hedy Lamarr"
241241
className="photo"
242242
/>
243243
<ul>
244-
<li>Invent new traffic lights</li>
245-
<li>Rehearse a movie scene</li>
246-
<li>Improve the spectrum technology</li>
244+
<li>Izmisli nove semafore</li>
245+
<li>Vežbaj scenu iz filma</li>
246+
<li>Unapredi tehnologiju spektra</li>
247247
</ul>
248248
</>
249249
);
@@ -258,34 +258,34 @@ img { height: 90px }
258258

259259
<Recap>
260260

261-
Now you know why JSX exists and how to use it in components:
261+
Sada znate zašto JSX postoji i kako da ga koristite u komponentama:
262262

263-
* React components group rendering logic together with markup because they are related.
264-
* JSX is similar to HTML, with a few differences. You can use a [converter](https://transform.tools/html-to-jsx) if you need to.
265-
* Error messages will often point you in the right direction to fixing your markup.
263+
* React komponente grupišu logiku renderovanja i markup zato što su povezani.
264+
* JSX je sličan HTML-u, ali ima par razlika. Ako vam je potrebno, možete koristiti [konverter](https://transform.tools/html-to-jsx).
265+
* Poruke o greškama će vam često ukazati na pravac u kom možete popraviti vaš markup.
266266

267267
</Recap>
268268

269269

270270

271271
<Challenges>
272272

273-
#### Convert some HTML to JSX {/*convert-some-html-to-jsx*/}
273+
#### Konvertujte HTML u JSX {/*convert-some-html-to-jsx*/}
274274

275-
This HTML was pasted into a component, but it's not valid JSX. Fix it:
275+
Ovaj HTML je samo ubačen u komponentu, ali nije validan JSX. Popravite ga:
276276

277277
<Sandpack>
278278

279279
```js
280280
export default function Bio() {
281281
return (
282282
<div class="intro">
283-
<h1>Welcome to my website!</h1>
283+
<h1>Dobro došli na moj sajt!</h1>
284284
</div>
285285
<p class="summary">
286-
You can find my thoughts here.
286+
Ovde možete pronaći moje ideje.
287287
<br><br>
288-
<b>And <i>pictures</b></i> of scientists!
288+
<b>I <i>slike</b></i> naučnika!
289289
</p>
290290
);
291291
}
@@ -308,7 +308,7 @@ export default function Bio() {
308308

309309
</Sandpack>
310310

311-
Whether to do it by hand or using the converter is up to you!
311+
Možete to uraditi samostalno ili pomoću konvertera. Na vama je!
312312

313313
<Solution>
314314

@@ -319,12 +319,12 @@ export default function Bio() {
319319
return (
320320
<div>
321321
<div className="intro">
322-
<h1>Welcome to my website!</h1>
322+
<h1>Dobro došli na moj sajt!</h1>
323323
</div>
324324
<p className="summary">
325-
You can find my thoughts here.
325+
Ovde možete pronaći moje ideje.
326326
<br /><br />
327-
<b>And <i>pictures</i></b> of scientists!
327+
<b>I <i>slike</i></b> naučnika!
328328
</p>
329329
</div>
330330
);

0 commit comments

Comments
 (0)