Skip to content

Commit 90145ea

Browse files
authored
Update tutorial.md
1 parent d36f795 commit 90145ea

File tree

1 file changed

+15
-87
lines changed

1 file changed

+15
-87
lines changed

content/tutorial/tutorial.md

Lines changed: 15 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,7 @@ Il tutorial è diviso nelle seguenti sezioni:
3131

3232
Non devi completare tutte le sezioni in una volta per guadagnare qualcosa da questo tutorial. Prova a seguirlo fin quando puoi -- anche se è solo per una o due sezioni.
3333

34-
<<<<<<< HEAD
35-
Va bene lo stesso se preferisci copiare ed incollare il codice lungo il tutorial, tuttavia, ti raccomandiamo di scriverlo a mano. Ti aiuterà a sviluppare memoria muscolare ed a capire meglio i concetti espressi.
36-
3734
### Cosa Stiamo Costruendo? {#what-are-we-building}
38-
=======
39-
### What Are We Building? {#what-are-we-building}
40-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
4135

4236
In questo tutorial, ti mostreremo come costruire in React una versione interattiva del gioco tic-tac-toe (conosciuto anche come "tris").
4337

@@ -192,13 +186,9 @@ Il componente Square (quadrato) visualizza un singolo `<button>` mentre Board (t
192186

193187
### Passare Dati Mediante Props {#passing-data-through-props}
194188

195-
<<<<<<< HEAD
196189
Giusto per rompere il ghiaccio, proviamo a passare qualche dato dal componente Board al nostro componente Square.
197-
=======
198-
To get our feet wet, let's try passing some data from our Board component to our Square component.
199190

200-
We strongly recommend typing code by hand as you're working through the tutorial and not using copy/paste. This will help you develop muscle memory and a stronger understanding.
201-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
191+
Va bene lo stesso se preferisci copiare ed incollare il codice lungo il tutorial, tuttavia, ti raccomandiamo di scriverlo a mano. Ti aiuterà a sviluppare memoria muscolare ed a capire meglio i concetti espressi.
202192

203193
Nel metodo `renderSquare` in Board, modifica il codice per passare una prop chiamata `value` allo Square:
204194

@@ -252,11 +242,7 @@ class Square extends React.Component {
252242
}
253243
```
254244

255-
<<<<<<< HEAD
256245
Adesso, se clicchiamo su uno Square, riceviamo un alert nel browser.
257-
=======
258-
If you click on a Square now, you should see an alert in your browser.
259-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
260246

261247
>Nota Bene
262248
>
@@ -274,11 +260,7 @@ If you click on a Square now, you should see an alert in your browser.
274260
>}
275261
>```
276262
>
277-
<<<<<<< HEAD
278263
>Nota come con `onClick={() => alert('click')}`, stiamo passando *una funzione* come prop `onClick`. Essa viene eseguita a seguito di un click. Dimenticare `() =>` e scrivere `onClick={alert('click')}` è un errore comune, e risulterebbe nel lanciare l'alert ogni volta che il componente viene ridisegnato (chiamata a `render()`).
279-
=======
280-
>Notice how with `onClick={() => alert('click')}`, we're passing *a function* as the `onClick` prop. React will only call this function after a click. Forgetting `() =>` and writing `onClick={alert('click')}` is a common mistake, and would fire the alert every time the component re-renders.
281-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
282264
283265
Come passo successivo, vogliamo far si che il componente Square si "ricordi" di essere stato cliccato, e che visualizzi il segno "X" al suo interno. Per "ricordare" cose, i componenti usano **state** (inteso come ["stato"](https://en.wikipedia.org/wiki/State_(computer_science))).
284266
@@ -311,15 +293,9 @@ class Square extends React.Component {
311293
312294
Procediamo alla modifica del metodo `render` di Square per visualizzare il valore corrente dello stato quando lo clicchiamo:
313295

314-
<<<<<<< HEAD
315296
* Sostituisci `this.props.value` con `this.state.value` all'interno del tag `<button>`.
316-
* Sostituisci l'event handler `() => alert()` con `() => this.setState({value: 'X'})`.
297+
* Sostituisci l'event handler `onClick={...}` con `onClick={() => this.setState({value: 'X'})}`.
317298
* Aggiungi le props `className` e `onClick` come linee separate per miglior leggibilità.
318-
=======
319-
* Replace `this.props.value` with `this.state.value` inside the `<button>` tag.
320-
* Replace the `onClick={...}` event handler with `onClick={() => this.setState({value: 'X'})}`.
321-
* Put the `className` and `onClick` props on separate lines for better readability.
322-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
323299

324300
Al seguito delle nostre modifiche, il tag `<button>` ritornato dal metodo `render` di Square sarà:
325301

@@ -380,13 +356,9 @@ Possiamo pensare che Board debba solo richiedere ad ogni Square il relativo stat
380356

381357
**Per recuperare dati dai componenti figli a partire dal componente padre, o per far comunicare tra di loro due componenti figli, bisogna definire uno stato condiviso nel componente padre. Quest'ultimo può passare di nuovo lo stato in basso, ai figli, usando props; ciò mantiene i componenti figli in sincronia tra di loro ed ovviamente con il componente padre.**
382358

383-
<<<<<<< HEAD
384-
Elevare lo stato nel componente padre è un processo comune quando i componenti React vengono rifattorizzati -- proviamo già che ci siamo. Cominciamo aggiungendo un costruttore a Board ed impostandone lo stato iniziale così da contenere un array di 9 nulls. Questi 9 nulls corrispondono ai 9 quadrati:
385-
=======
386-
Lifting state into a parent component is common when React components are refactored -- let's take this opportunity to try it out.
359+
Elevare lo stato nel componente padre è un processo comune quando i componenti React vengono rifattorizzati -- proviamo già che ci siamo.
387360

388-
Add a constructor to the Board and set the Board's initial state to contain an array of 9 nulls corresponding to the 9 squares:
389-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
361+
Cominciamo aggiungendo un costruttore a Board ed impostandone lo stato iniziale così da contenere un array di 9 nulls. Questi 9 nulls corrispondono ai 9 quadrati:
390362

391363
```javascript{2-7}
392364
class Board extends React.Component {
@@ -402,11 +374,7 @@ class Board extends React.Component {
402374
}
403375
```
404376

405-
<<<<<<< HEAD
406-
Quando riempiremo la tavola più tardi, risulterà più o meno così:
407-
=======
408-
When we fill the board in later, the `this.state.squares` array will look something like this:
409-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
377+
Quando riempiremo la tavola più tardi, l'array `this.state.squares` risulterà più o meno così:
410378

411379
```javascript
412380
[
@@ -440,11 +408,7 @@ Ogni Square adesso riceverà una prop `value` che sarà valorizzata con `'X'`, `
440408

441409
Successivamente, dobbiamo cambiare cosa succede quando uno Square viene cliccato. Il componente Board adesso sa quali quadrati sono riempiti. Dobbiamo fare in modo che gli Square possano modificare lo stato all'interno di Board. Dato che lo stato è considerato privato ed accessibile per definizione solo al componente nel quale è definito, non possiamo modificarlo direttamente da Square.
442410

443-
<<<<<<< HEAD
444-
Al fine di mantenere la privacy dello stato di Board, dobbiamo passare da Board a Square una funzione. Questa funzione verrà richiamata ogni qual volta uno Square viene cliccato. Ecco come dobbiamo modificare il metodo `renderSquare` di Board:
445-
=======
446-
Instead, we'll pass down a function from the Board to the Square, and we'll have Square call that function when a square is clicked. We'll change the `renderSquare` method in Board to:
447-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
411+
Possiamo però passare una funzione da Board a Square. Questa funzione verrà richiamata ogni qual volta uno Square viene cliccato. Ecco come dobbiamo modificare il metodo `renderSquare` di Board:
448412

449413
```javascript{5}
450414
renderSquare(i) {
@@ -486,27 +450,15 @@ class Square extends React.Component {
486450

487451
Quando uno Square viene cliccato, viene richiamata la funzione `onClick` provvista da Board. Ecco in dettaglio come ciò avviene:
488452

489-
<<<<<<< HEAD
490453
1. La prop `onClick` nel componente `<button>` presente nel DOM (di fabbrica) dice a React di impostare un event handler per il click.
491454
2. Quando il bottone viene cliccato, React richiama l'event handler `onClick` che è definito nel metodo `render()` di Square.
492455
3. Questo event handler chiama a sua volta `this.props.onClick()`. La prop `onClick` di Square è stata però specificata da Board.
493456
4. Dato che Board ha passato `onClick={() => this.handleClick(i)}` a Square, di conseguenza Square richiama `this.handleClick(i)` quando viene cliccato.
494-
5. Non abbiamo ancora definito alcun metodo `handleClick()`, per questo il nostro codice non funziona al momento.
495-
=======
496-
1. The `onClick` prop on the built-in DOM `<button>` component tells React to set up a click event listener.
497-
2. When the button is clicked, React will call the `onClick` event handler that is defined in Square's `render()` method.
498-
3. This event handler calls `this.props.onClick()`. The Square's `onClick` prop was specified by the Board.
499-
4. Since the Board passed `onClick={() => this.handleClick(i)}` to Square, the Square calls `this.handleClick(i)` when clicked.
500-
5. We have not defined the `handleClick()` method yet, so our code crashes. If you click a square now, you should see a red error screen saying something like "this.handleClick is not a function".
501-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
457+
5. Non abbiamo ancora definito alcun metodo `handleClick()`, per questo il nostro codice non funziona al momento. Infatti, se clicchi su uno Square adesso, dovresti ricevere un messaggio di errore che dice qualcosa del tipo: "this.handleClick is not a function".
502458

503459
>Nota Bene
504460
>
505-
<<<<<<< HEAD
506-
>L'attributo `onClick` dell'elemento DOM `<button>` ha un significato speciale in quanto è un componente di fabbrica. Per componenti customizzati come Square, la nomenclatura sta a te. Potremmo dare un nome diverso alla prop `onClick` di Square o al metodo `handleClick` di Board. In React, comunque, esiste la convenzione di utilizzare i nomi `on[Evento]` per le props che rappresentano eventi ed `handle[Evento]` per i metodi che gestiscono gli eventi.
507-
=======
508-
>The DOM `<button>` element's `onClick` attribute has a special meaning to React because it is a built-in component. For custom components like Square, the naming is up to you. We could give any name to the Square's `onClick` prop or Board's `handleClick` method, and the code would work the same. In React, it's conventional to use `on[Event]` names for props which represent events and `handle[Event]` for the methods which handle the events.
509-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
461+
>L'attributo `onClick` dell'elemento DOM `<button>` ha un significato speciale in quanto è un componente di fabbrica. Per componenti customizzati come Square, la nomenclatura sta a te. Potremmo dare un nome diverso alla prop `onClick` di Square o al metodo `handleClick` di Board ed il codice continuerebbe a funzionare. In React, comunque, esiste la convenzione di utilizzare i nomi `on[Evento]` per le props che rappresentano eventi ed `handle[Evento]` per i metodi che gestiscono gli eventi.
510462
511463
Quando proviamo a cliccare su uno Square, dovremmo ricevere un errore visto che non abbiamo ancora definito `handleClick`. Andiamo ora ad aggiungere `handleClick` alla classe Board:
512464

@@ -563,11 +515,7 @@ class Board extends React.Component {
563515

564516
**[Visualizza tutto il codice scritto finora](https://codepen.io/gaearon/pen/ybbQJX?editors=0010)**
565517

566-
<<<<<<< HEAD
567-
A seguito di queste modifiche, siamo ancora in grado di cliccare sui componenti Square, facendo sì che si valorizzino. Tuttavia, adesso lo stato viene mantenuto nel componente Board invece che individualmente nei vari componenti Square. Quando lo stato di Board cambia, i componenti Square vengono renderizzati di nuovo automaticamente. Mantenere lo stato di tutti i quadrati nel componente Board ci permetterà di determinare il vincitore in futuro.
568-
=======
569-
After these changes, we're again able to click on the Squares to fill them, the same as we had before. However, now the state is stored in the Board component instead of the individual Square components. When the Board's state changes, the Square components re-render automatically. Keeping the state of all squares in the Board component will allow it to determine the winner in the future.
570-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
518+
A seguito di queste modifiche, siamo ancora in grado di cliccare sui componenti Square, facendo sì che si valorizzino come in precedenza. Tuttavia, adesso lo stato viene mantenuto nel componente Board invece che individualmente nei vari componenti Square. Quando lo stato di Board cambia, i componenti Square vengono renderizzati di nuovo automaticamente. Mantenere lo stato di tutti i quadrati nel componente Board ci permetterà di determinare il vincitore in futuro.
571519

572520
Dato che i componenti Square non mantengono più il proprio stato, essi ricevono valori dal componente Board ed a loro volta lo informano di quando vengono cliccati. In termini di React, i componenti Square sono ora **componenti controllati**. Board ha infatti il controllo completo su di essi.
573521

@@ -611,11 +559,7 @@ Rilevare cambiamenti in oggetti mutabili è difficile perchè essi vengono modif
611559

612560
Rilevare cambiamenti negli oggetti immutabili è considerevolmente più semplice. Se il riferimento dell'oggetto immutabile è diverso dal precedente, allora l'oggetto è cambiato.
613561

614-
<<<<<<< HEAD
615562
#### Determinare Quando Renderizzare di Nuovo in React {#determining-when-to-re-render-in-react}
616-
=======
617-
#### Determining When to Re-Render in React {#determining-when-to-re-render-in-react}
618-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
619563

620564
Il più grande beneficio dell'immutabilità è il fatto che ci aiuta a creare _componenti puri_ in React. Avere dati immutabili permette di identificare cambiamenti in modo semplice e di conseguenza anche di capire quando un componente richiede una nuova renderizzazione.
621565

@@ -645,11 +589,7 @@ Abbiamo cambiato `this.props` in `props` in entrambi i casi.
645589

646590
>Nota Bene
647591
>
648-
<<<<<<< HEAD
649-
>Quando abbiamo convertito Square in un componente funzione, abbiamo anche cambiato `onClick={() => this.props.onClick()}` nella versione più corta `onClick={props.onClick}` (nota l'assenza delle parentesi da *entrambi* i lati). Nella classe, avevamo usato una arrow function per avere accesso al corretto valore di `this`, nel componente funzione, al contrario, non dobbiamo preoccuparci di `this`.
650-
=======
651-
>When we modified the Square to be a function component, we also changed `onClick={() => this.props.onClick()}` to a shorter `onClick={props.onClick}` (note the lack of parentheses on *both* sides).
652-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
592+
>Quando abbiamo convertito Square in un componente funzione, abbiamo anche cambiato `onClick={() => this.props.onClick()}` nella versione più corta `onClick={props.onClick}` (nota l'assenza delle parentesi da *entrambi* i lati).
653593
654594
### Turni {#taking-turns}
655595

@@ -681,13 +621,9 @@ Ogni volta che un giocatore muove, `xIsNext` (booleano) viene invertito per dete
681621
}
682622
```
683623

684-
<<<<<<< HEAD
685-
Con questo cambiamento, "X" e "O" adesso vengono usati alternativamente di turno in turno. Dobbiamo anche cambiare il testo "status" nel `render` di Board cosicchè verremo informati a video del giocatore che deve muovere nel turno successivo:
686-
=======
687-
With this change, "X"s and "O"s can take turns. Try it!
624+
Con questo cambiamento, "X" e "O" adesso vengono usati alternativamente di turno in turno. Prova!
688625

689-
Let's also change the "status" text in Board's `render` so that it displays which player has the next turn:
690-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
626+
Dobbiamo anche cambiare il testo "status" nel `render` di Board cosicchè verremo informati a video del giocatore che deve muovere nel turno successivo:
691627

692628
```javascript{2}
693629
render() {
@@ -758,11 +694,7 @@ class Board extends React.Component {
758694

759695
### Dichiarare un Vincitore {#declaring-a-winner}
760696

761-
<<<<<<< HEAD
762-
Adesso che possiamo visualizzare quale giocatore deve muovere nel prossimo turno, possiamo anche visualizzare quando una partita è finita ed il relativo vincitore. Per determinare il vincitore, aggiungiamo una funzione aiutante (funzioni che contribuiscono alla risoluzione dell'algoritmo, normalmente chiamate "helper functions") alla fine del file:
763-
=======
764-
Now that we show which player's turn is next, we should also show when the game is won and there are no more turns to make. Copy this helper function and paste it at the end of the file:
765-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
697+
Adesso che possiamo visualizzare quale giocatore deve muovere nel prossimo turno, possiamo anche visualizzare quando una partita è finita ed il relativo vincitore. Copia questa funzione aiutante (funzioni che contribuiscono alla risoluzione dell'algoritmo, normalmente chiamate "helper functions") ed incollala alla fine del file:
766698

767699
```javascript
768700
function calculateWinner(squares) {
@@ -786,13 +718,9 @@ function calculateWinner(squares) {
786718
}
787719
```
788720

789-
<<<<<<< HEAD
790-
Richiameremo `calculateWinner(squares)` nella funzione `render` di Board per verificare se un giocatore ha vinto. In caso positivo, visualizzeremo il testo "Winner: X" oppure "Winner: O". Sostituiremo la dichiarazione di `status` nella funzione `render` di Board in questo modo:
791-
=======
792-
Given an array of 9 squares, this function will check for a winner and return `'X'`, `'O'`, or `null` as appropriate.
721+
Dato un array di 9 quadrati, questa funzione determinerà il vincitore e ritornerà `'X'`, `'O'` o `null` di conseguenza.
793722

794-
We will call `calculateWinner(squares)` in the Board's `render` function to check if a player has won. If a player has won, we can display text such as "Winner: X" or "Winner: O". We'll replace the `status` declaration in Board's `render` function with this code:
795-
>>>>>>> 8803c6375b153af39a850822d844db94ea4c9b0a
723+
Richiameremo `calculateWinner(squares)` nella funzione `render` di Board per verificare se un giocatore ha vinto. In caso positivo, visualizzeremo il testo "Winner: X" oppure "Winner: O". Sostituiremo la dichiarazione di `status` nella funzione `render` di Board in questo modo:
796724

797725
```javascript{2-8}
798726
render() {

0 commit comments

Comments
 (0)