1 00:00:02,310 --> 00:00:10,050 Ora, prima di finire questo modulo, torniamo ad alcuni elenchi e ad alcuni contenuti scorrevoli perché in questa 2 00:00:10,050 --> 00:00:12,670 applicazione non abbiamo affatto tali contenuti 3 00:00:12,690 --> 00:00:18,570 ed effettivamente, è fondamentale per voi capire come lavorare con gli elenchi e quali 4 00:00:18,570 --> 00:00:19,920 stranezze speciali 5 00:00:19,920 --> 00:00:25,380 sono quando si tratta di elenchi. Quindi diciamo che qui vogliamo registrare le ipotesi 6 00:00:25,380 --> 00:00:32,060 precedenti fatte dal computer, vogliamo registrarlo qui sotto il nostro pulsante più e meno in questo spazio bianco vuoto qui. 7 00:00:32,310 --> 00:00:38,910 Per questo, ovviamente, dobbiamo registrare qualsiasi ipotesi fatta dal computer e quindi emetterlo nell'elenco. 8 00:00:38,910 --> 00:00:41,880 Quindi nella schermata di gioco, iniziamo con la registrazione. 9 00:00:41,970 --> 00:00:44,610 Attualmente stiamo solo contando i round qui, 10 00:00:44,610 --> 00:00:49,620 ma l'obiettivo deve essere che non contiamo solo i round ma che abbiamo anche salvato 11 00:00:49,650 --> 00:00:52,770 i round, quindi abbiamo salvato un'ipotesi che è stata fatta 12 00:00:52,920 --> 00:00:59,520 in ogni round e per raggiungerlo qui nei nostri round stato, possiamo semplicemente gestire un array invece di un numero 13 00:00:59,520 --> 00:01:03,510 e chiamerò queste ipotesi passate per essere veramente chiaro su cosa c'è 14 00:01:03,690 --> 00:01:06,690 dentro e questo è quindi chiamato Imposta ipotesi passate. 15 00:01:06,690 --> 00:01:13,390 Quindi ora l'obiettivo è aggiungere una nuova ipotesi qui a questo array ogni volta che generiamo un nuovo numero 16 00:01:13,390 --> 00:01:19,530 casuale, quindi qui nel prossimo gestore di ipotesi. Lì dove impostiamo i round, invece di impostare 17 00:01:19,560 --> 00:01:23,660 i round in questo modo che non stiamo più gestendo, dobbiamo impostare 18 00:01:23,790 --> 00:01:30,420 le nostre ipotesi passate e lì dobbiamo usare le nostre ipotesi precedenti e aggiungere effettivamente una nuova ipotesi qui. 19 00:01:30,420 --> 00:01:37,540 Ora, per questo, possiamo usare quel modulo di funzione qui dove otteniamo curPastGuesses che è un po 'un nome 20 00:01:37,540 --> 00:01:42,790 strano ma che significa semplicemente che questo è il nostro stato attuale e vogliamo 21 00:01:42,790 --> 00:01:49,810 aggiornarlo o il nostro ultimo stato per essere precisi e noi vogliamo aggiornarlo e vogliamo aggiornarlo restituendo un nuovo 22 00:01:50,020 --> 00:01:55,720 array che sarà il nostro nuovo stato e che ovviamente dovrebbe tener conto delle nostre 23 00:01:56,020 --> 00:01:59,680 ipotesi passate attuali e quindi aggiungere nuove ipotesi lì. 24 00:01:59,690 --> 00:02:04,280 Ora possiamo aggiungere una nuova ipotesi alla fine dell'elenco o all'inizio e in realtà la aggiungerò 25 00:02:04,280 --> 00:02:09,590 all'inizio in modo che la nostra ipotesi più recente sia sempre in cima all'elenco quando in seguito la visualizziamo 26 00:02:09,590 --> 00:02:10,520 sullo schermo . 27 00:02:11,210 --> 00:02:17,600 Quindi qui, possiamo aggiungere il prossimo numero che è la nostra nuova ipotesi attuale che stiamo generando qui 28 00:02:17,600 --> 00:02:25,440 ed è quello che dobbiamo aggiungere qui come elemento, giusto? Con ciò, stiamo aggiungendo nuovi elementi a questo array con ogni ipotesi. 29 00:02:25,470 --> 00:02:28,760 Ora non dimenticare che iniziamo anche con un'ipotesi, 30 00:02:28,770 --> 00:02:31,290 generiamo un'ipotesi iniziale qui, voglio iniziare 31 00:02:31,290 --> 00:02:36,670 con quell'ipotesi nell'elenco e quindi, dobbiamo aggiungerlo all'elenco qui, quindi lo estrarrò dalla 32 00:02:36,720 --> 00:02:44,040 nostra funzione state state chiama qui e crea una nuova ipotesi costante, iniziale che è questo numero generato 33 00:02:44,040 --> 00:02:51,910 casualmente e ora è questa ipotesi iniziale che aggiungo qui per usare state ed è anche la supposizione iniziale 34 00:02:51,910 --> 00:02:57,850 che aggiungo come primo elemento a quell'array in le nostre ipotesi passate, utilizzare l'inizializzazione 35 00:02:57,850 --> 00:02:59,200 di stato. 36 00:02:59,200 --> 00:03:06,260 Ora non dimenticare che usa lo stato come tutto questo codice qui ovviamente si ripete ogni volta che questo componente si esegue nuovamente il 37 00:03:06,340 --> 00:03:12,670 rendering ma il modo in cui funziona lo stato è tale che React rileva che uno stato per questo componente è già 38 00:03:12,670 --> 00:03:13,350 stato 39 00:03:13,780 --> 00:03:19,210 inizializzato, quindi imposterà dichiarare a questa ipotesi iniziale per la prima volta il rendering di questo componente e non 40 00:03:19,210 --> 00:03:21,400 per i rendering successivi. Lì, in 41 00:03:21,400 --> 00:03:28,120 effetti, questa ipotesi iniziale verrà ricreata ma non verrà effettivamente utilizzata a causa della gestione dello 42 00:03:28,210 --> 00:03:33,060 stato distaccato in cui React scopre che abbiamo già uno stato. 43 00:03:33,070 --> 00:03:38,080 Quindi, stiamo inizializzando questo, inizializzando anche le nostre ipotesi qui in quella lista e stiamo aggiungendo una 44 00:03:38,380 --> 00:03:43,090 nuova ipotesi alla lista in fondo qui. Con tutto ciò, dovremmo avere alcune 45 00:03:43,240 --> 00:03:46,480 ipotesi passate che possiamo emettere in un elenco e ora 46 00:03:46,780 --> 00:03:52,300 qui abbiamo due modi per emetterlo, con una FlatList o con la vista di scorrimento e inizierò di 47 00:03:52,300 --> 00:03:54,660 nuovo con una vista di scorrimento per quello. 48 00:03:54,730 --> 00:04:02,320 Quindi qui sotto la scheda, aggiungerò una vista di scorrimento e per questo, è necessario importare la vista di scorrimento da React 49 00:04:02,320 --> 00:04:02,890 Native, 50 00:04:03,010 --> 00:04:04,820 quindi facciamolo qui, scorri vista, 51 00:04:04,870 --> 00:04:10,060 importalo da React Native e output quello sotto l'elenco in modo che questo è un 52 00:04:10,420 --> 00:04:13,190 contenuto scorrevole perché lì dentro avrò il 53 00:04:13,210 --> 00:04:18,620 mio contenuto dinamico, userò le mie ipotesi passate e lo mapperò in un elenco di componenti. 54 00:04:18,640 --> 00:04:20,550 Quindi qui, avrò la mia 55 00:04:20,560 --> 00:04:26,140 ipotesi individuale per così dire e questo dovrebbe ora restituire un componente all'interno di questa funzione 56 00:04:26,140 --> 00:04:32,350 della mappa e un tale componente di ipotesi potrebbe essere una vista diciamo, con un testo lì dove ho 57 00:04:32,350 --> 00:04:39,880 semplicemente emesso l'ipotesi, quindi qui rendo questa ipotesi che sto ricevendo e poiché ho appena aggiunto le mie ipotesi qui direttamente all'array, la 58 00:04:39,880 --> 00:04:45,670 supposizione che ho dentro è solo il numero di ipotesi e posso semplicemente emetterlo in questo modo qui. 59 00:04:47,150 --> 00:04:53,600 Ora hai imparato che per gli elementi che stiamo mappando in questo modo, devi anche aggiungere una chiave e 60 00:04:53,600 --> 00:04:57,340 potremmo usare la nostra ipotesi qui come chiave se ci 61 00:04:57,350 --> 00:05:04,010 si assicurasse che fosse unica ma con la nostra logica attuale, in realtà non lo è perché nella nostra logica 62 00:05:04,010 --> 00:05:11,300 attuale, la generazione casuale tra genera in realtà un nuovo numero casuale in cui il limite superiore, questo valore elevato qui, è 63 00:05:11,300 --> 00:05:17,190 escluso ma viene incluso il limite inferiore, quindi possiamo ottenere questo limite inferiore come nuovo valore casuale. 64 00:05:17,300 --> 00:05:23,660 Ora il rovescio della medaglia di questo è che qui dove stiamo impostando il nostro nuovo limite inferiore, lo stiamo impostando 65 00:05:23,660 --> 00:05:30,020 sull'ipotesi attuale, il che significa che questo può essere ripetuto in un futuro numero casuale e in realtà abbiamo visto 66 00:05:30,020 --> 00:05:31,120 anche questo in 67 00:05:31,130 --> 00:05:37,010 questo modulo, a volte lì , il computer indovina un numero già indovinato un paio di volte prima. 68 00:05:37,070 --> 00:05:42,900 Non è un grosso problema, ma ora è perché ora abbiamo bisogno che la nostra ipotesi 69 00:05:43,190 --> 00:05:49,460 sia garantita, per essere unica e la correzione è semplice, tuttavia possiamo semplicemente aggiungerne uno qui quando impostiamo 70 00:05:49,460 --> 00:05:56,930 il nostro nuovo limite inferiore perché aggiungendo uno qui, assicuriamo che il nuovo limite inferiore incluso nella generazione di numeri casuali 71 00:05:57,410 --> 00:06:01,270 è in realtà uno superiore all'ipotesi corrente che era falsa, altrimenti 72 00:06:01,280 --> 00:06:02,910 non saremmo arrivati qui. 73 00:06:02,930 --> 00:06:09,020 Quindi ora stiamo impostando un nuovo limite inferiore che può essere generato in futuro ma che non abbiamo 74 00:06:09,020 --> 00:06:09,950 generato prima. 75 00:06:09,950 --> 00:06:13,100 Quindi questa è una piccola correzione nella logica che 76 00:06:13,100 --> 00:06:18,560 non danneggia in alcun modo ed è particolarmente importante se prevedi di utilizzare l'ipotesi come chiave unica qui. 77 00:06:18,640 --> 00:06:20,110 Quindi, con 78 00:06:20,110 --> 00:06:21,670 quello, vediamo se funziona. 79 00:06:21,730 --> 00:06:26,190 Salviamolo e proviamolo qui su iOS, iniziamo il gioco 80 00:06:26,190 --> 00:06:27,610 e vediamo 81 00:06:27,750 --> 00:06:31,830 la nostra ipotesi iniziale, 57, non è ben 82 00:06:31,830 --> 00:06:37,890 formattata ma lo vediamo qui. Ora 57 è troppo alto, se dico più 83 00:06:37,920 --> 00:06:43,670 in basso, vediamo la nuova ipotesi in cima alla lista e ho mentito lì e sembra funzionare. 84 00:06:43,740 --> 00:06:49,470 Ora, naturalmente, stiamo ricevendo un errore quando il gioco è finito perché lì, stiamo cercando di ottenere i nostri round e 85 00:06:49,980 --> 00:06:53,730 non stiamo più gestendo questo stato. Quindi dovremo 86 00:06:53,910 --> 00:06:56,590 risolverlo ma l'uscita dell'elenco funziona. 87 00:06:56,670 --> 00:06:59,140 Ora correggiamo l'errore dei round che 88 00:06:59,160 --> 00:07:08,580 stiamo ricevendo, che proviene semplicemente da useEffect dove inoltro i round a onGameOver. Lì alla fine ho bisogno di inoltrare il numero di 89 00:07:08,580 --> 00:07:13,120 round necessari al computer per indovinare il nostro numero. 90 00:07:13,140 --> 00:07:17,030 In precedenza avevamo una variabile di round qui, uno stato di round, 91 00:07:17,040 --> 00:07:23,010 ora abbiamo solo ipotesi passate che sono un array, quindi non possiamo inoltrare ipotesi passate come questa perché alla 92 00:07:23,040 --> 00:07:24,660 fine del gioco abbiamo bisogno 93 00:07:24,660 --> 00:07:30,440 di un numero, ma ovviamente possiamo inoltrare il lunghezza delle ipotesi passate, che è solo il numero di round 94 00:07:30,450 --> 00:07:31,520 necessari al computer. 95 00:07:31,530 --> 00:07:37,920 Quindi, se lo facciamo, ora dovremmo effettivamente essere in grado di finire il gioco con successo. 96 00:07:37,980 --> 00:07:43,440 Se diamo una rapida prova qui e risolviamo il gioco, 97 00:07:43,440 --> 00:07:44,900 sì, funziona. 98 00:07:45,030 --> 00:07:47,340 Quindi ora abbiamo quello che funziona, ora 99 00:07:47,340 --> 00:07:51,750 giriamo la testa verso quella vista di scorrimento e le voci dell'elenco di nuovo lì 100 00:07:51,750 --> 00:07:54,210 e assicuriamoci di avere lo stile giusto lì.