1 00:00:02,310 --> 00:00:07,140 Cara kami menggunakan status Anda sudah benar. 2 00:00:07,140 --> 00:00:08,530 Kami melewati sebuah perkebunan. 3 00:00:08,550 --> 00:00:14,730 Kami mendapatkan kembali array ini yang disimpan dalam konstanta ini tetapi cara kami memperbarui 4 00:00:14,730 --> 00:00:16,160 keadaan tidak benar. 5 00:00:16,170 --> 00:00:22,650 Ada satu perbedaan super penting ketika Anda membandingkan status penggunaan dan bagaimana Anda bekerja dengan status dan komponen fungsional dengan 6 00:00:22,650 --> 00:00:27,450 bagaimana Anda bekerja dengan keadaan yang diatur dan untuk menyatakan dan komponen berbasis kelas. 7 00:00:27,450 --> 00:00:32,250 Ada perbedaan penting antara kedua konsep ini untuk Anda sebagai sebuah negara. 8 00:00:32,250 --> 00:00:36,990 Seperti yang saya sebutkan sebelumnya Anda tidak dapat mengelola keadaan apa pun itu tidak harus menjadi objek Anda hanya bisa 9 00:00:37,170 --> 00:00:38,370 mengelola Beberapa teks di sini. 10 00:00:38,670 --> 00:00:44,550 Tetapi di sini saya memutuskan untuk bekerja dengan sebuah objek karena saya memiliki dua tipe state atau dua field input 11 00:00:44,580 --> 00:00:47,460 yang ingin saya kelola sekarang dalam komponen berbasis kelas. 12 00:00:47,460 --> 00:00:54,150 Anda selalu harus menggunakan objek tetapi di sana setiap kali Anda memanggil kata negara yang pernah Anda 13 00:00:54,210 --> 00:00:58,170 masuk ke kata negara digabung dengan keadaan Anda yang ada. 14 00:00:58,200 --> 00:01:03,480 Jadi di sana jika kita melewatinya objek dengan properti judul itu akan bergabung dengan keadaan 15 00:01:03,630 --> 00:01:09,270 kita saat ini dan jumlah properti tidak akan hilang tetapi hanya properti judul akan diperbarui dan 16 00:01:09,270 --> 00:01:13,270 semua keadaan lama akan disimpan dengan Anda sebagai keadaan yang berbeda. 17 00:01:13,320 --> 00:01:14,680 Fungsi pembaruan ini. 18 00:01:14,700 --> 00:01:22,050 Elemen kedua dari array kami tidak diperbarui ke keadaan tetapi itu dengan mengganti keadaan saat ini dengan ini yang dalam 19 00:01:22,050 --> 00:01:27,960 hal ini berarti jika kita mengetik ke judul negara baru kita hanya merupakan objek yang hanya 20 00:01:27,960 --> 00:01:31,220 memiliki properti judul dan kita drop jumlahnya Properti. 21 00:01:31,220 --> 00:01:35,710 Estate baru kami adalah objek yang tidak memiliki jumlah properti lagi. 22 00:01:35,760 --> 00:01:39,980 Itu sebabnya saya mendapatkan peringatan ini bahwa input nomor tipe tidak terkontrol. 23 00:01:39,990 --> 00:01:45,090 Itu input kedua kami dan saya mendapat peringatan tentang input utang ketika kita mengetikkan input pertama 24 00:01:45,420 --> 00:01:49,350 karena input kedua adalah jumlah input di sini yang merupakan tipe No. 25 00:01:49,380 --> 00:01:53,200 Ini tentu saja merujuk pada jumlah properti di negara kita. 26 00:01:53,250 --> 00:01:59,490 Sekarang jika kita mengetikkan input pertama, kita memperbarui status untuk sekarang menjadi objek yang hanya memiliki properti judul maka 27 00:01:59,820 --> 00:02:02,780 properti yang kita coba akses pada input kedua. 28 00:02:02,790 --> 00:02:08,520 Jumlah properti tidak lagi ada dan itulah yang menyebabkan kesalahan ini. 29 00:02:08,520 --> 00:02:15,810 Solusinya sederhana ketika kita memperbarui keadaan kita harus memastikan bahwa kita tidak kehilangan data lama. 30 00:02:15,840 --> 00:02:21,210 Itu bukan tanggung jawab kita karena reaksi tidak menggabungkan itu secara otomatis untuk kita. 31 00:02:21,330 --> 00:02:27,690 Dan sementara ini mungkin terdengar seperti perubahan yang buruk sementara ini mungkin terdengar seperti itu harus dilakukan 32 00:02:27,930 --> 00:02:33,990 untuk kita nanti Anda akan belajar mengapa reaksi sebenarnya tidak digabung seperti untuk kita lagi karena sekarang 33 00:02:33,990 --> 00:02:41,280 kita benar-benar memiliki lebih banyak fleksibilitas mengenai bagaimana kita mengelola negara jika kita memutuskan untuk mengelola beberapa keadaan objek yang 34 00:02:41,310 --> 00:02:43,920 mungkin sangat baik dalam banyak situasi. 35 00:02:43,920 --> 00:02:48,130 Kami harus memastikan bahwa setiap kali kami memperbarui kami tidak kehilangan data lama. 36 00:02:48,240 --> 00:02:54,270 Jadi, ketika kami memperbarui judul di sini, kami juga harus mengatur jumlah properti dan cukup mengaturnya ke keadaan akun 37 00:02:54,270 --> 00:02:55,290 saat ini kami. 38 00:02:55,290 --> 00:03:02,760 Jadi untuk keadaan jumlah yang tidak berubah dengan mengakses keadaan input 0 sehingga keadaan saat ini jumlah dolar 39 00:03:02,760 --> 00:03:07,830 snapshot misalnya di sisi lain ketika kita memperbarui jumlah kita juga 40 00:03:07,830 --> 00:03:14,760 harus memastikan bahwa kita tidak kehilangan judul dengan juga mengatur ini ke keadaan input 0 judul titik. 41 00:03:14,770 --> 00:03:20,830 Sekarang jika Anda melakukannya jika Anda memastikan bahwa ketika Anda memperbarui keadaan Anda tidak kehilangan informasi apa pun. 42 00:03:20,830 --> 00:03:24,760 Sekarang jika saya mengetik di sini Anda melihat saya tidak mendapat peringatan lagi. 43 00:03:24,760 --> 00:03:28,430 Dan tentu saja tombol ini tidak melakukan apa-apa karena kita tidak terhubung lagi. 44 00:03:28,510 --> 00:03:33,020 Tetapi input ini sekarang bekerja dengan benar. 45 00:03:33,030 --> 00:03:41,460 Kode kami di sini, kode yang diperbarui tidak 100 persen benar, namun alasan untuk data adalah bahwa saya mengakses snapshot keadaan saat 46 00:03:41,460 --> 00:03:46,470 ini pada elemen array pertama dan tentu saja yang menyimpan snapshot keadaan saat 47 00:03:46,590 --> 00:03:49,370 ini untuk siklus komponen render komponen ini. 48 00:03:49,500 --> 00:03:57,720 Tetapi cara bereaksi pembaruan untuk menyatakan kita tidak memiliki jaminan 100 persen di sini bahwa snapshot keadaan kita saat 49 00:03:57,720 --> 00:04:01,330 ini sebenarnya adalah keadaan terbaru yang kita lakukan. 50 00:04:01,350 --> 00:04:07,260 Dan ini mungkin terdengar aneh tetapi karena cara kita bertindak membuat komponen pada pembaruan negara 51 00:04:07,260 --> 00:04:08,390 dan sebagainya. 52 00:04:08,400 --> 00:04:12,510 Secara teoritis Anda dapat memiliki kasus di mana ada banyak hal yang terjadi di halaman Anda. 53 00:04:12,520 --> 00:04:20,330 Katakanlah banyak animasi atau banyak hal yang bereaksi memutuskan untuk menunda pembaruan keadaan sampai ada sedikit pekerjaan yang 54 00:04:20,370 --> 00:04:27,300 terjadi dan karena itu pengguna mungkin mengetik di sini ke input judul sebelum input jumlah terbaru 55 00:04:27,300 --> 00:04:30,880 karena pengguna juga mengetik dalam jumlah bidang input. 56 00:04:30,930 --> 00:04:35,940 Sedetik yang lalu sebelum perubahan status dat telah ditampilkan di layar. 57 00:04:35,970 --> 00:04:38,290 Sekarang sangat tidak mungkin hal ini terjadi. 58 00:04:38,370 --> 00:04:42,690 Dan dalam aplikasi sederhana ini di sini tidak akan pernah terjadi sebenarnya. 59 00:04:42,690 --> 00:04:48,780 Tetapi dalam aplikasi yang lebih kompleks, Anda dapat memiliki kasus di mana Anda mengubah beberapa negara 60 00:04:48,810 --> 00:04:53,580 dan perubahan negara terbaru Anda belum dilakukan belum diberikan ke layar. 61 00:04:53,580 --> 00:04:59,190 Karenanya jika Anda memiliki perubahan status baru, itu juga tergantung pada snapshot keadaan terbaru Anda. 62 00:04:59,370 --> 00:05:05,430 Maka Anda tidak memiliki jaminan bahwa Snapshot keadaan ini telah dilakukan dengan baik atau dibuat dan 63 00:05:05,700 --> 00:05:07,530 data untuk tahun ini. 64 00:05:07,620 --> 00:05:11,400 Mengakses nilai negara terbaru kami seperti ini bukan cara yang ideal. 65 00:05:11,850 --> 00:05:18,390 Alih-alih itu memperbarui fungsi sehingga fungsi ini disimpan dan disimpan sebagai elemen kedua dalam 66 00:05:18,390 --> 00:05:26,880 array Anda memiliki bentuk alternatif yang dapat Anda gunakan alih-alih hanya meneruskan nilai ke fungsi pembaruan utang sehingga ke 67 00:05:26,910 --> 00:05:29,490 fungsi yang menetapkan status baru. 68 00:05:29,580 --> 00:05:34,200 Anda juga dapat melewatkan fungsi ke fungsi tersebut sebagai fungsi anonim. 69 00:05:34,230 --> 00:05:40,920 Tapi tentu saja bisa juga yang bernama dan jika Anda melewati fungsi di sini yang tentu saja harus mengembalikan 70 00:05:40,920 --> 00:05:43,150 nilai negara baru Anda pada akhirnya. 71 00:05:43,180 --> 00:05:47,610 Dan saya membungkusnya dalam tanda kurung di sini sehingga saya dapat menggunakan notasi inline ini di sini. 72 00:05:47,610 --> 00:05:53,490 Notasi fungsi panah sebaris ini bahwa setelah nilai t panah bisnis di mana mengembalikan dan mengembalikan objek di 73 00:05:53,490 --> 00:05:58,050 sini tanpa tanda kurung tambahan ini akan diperlakukan sebagai badan fungsi dan ini hanya 74 00:05:58,050 --> 00:06:00,150 akan menjadi badan fungsi yang salah. 75 00:06:00,150 --> 00:06:06,840 Sekarang kami menunjukkan ke javascript bahwa ini di sini adalah fungsi tubuh kami dan ini sebenarnya adalah nilai balik 76 00:06:06,840 --> 00:06:08,550 yang hanya merupakan objek. 77 00:06:08,550 --> 00:06:10,380 Jadi sekarang kita mengembalikan objek itu. 78 00:06:10,380 --> 00:06:15,960 Tetapi dalam fungsi yang kita lewati ini mengatur fungsi negara di sini sehingga untuk mengatakan di sana 79 00:06:15,960 --> 00:06:19,050 kita mendapatkan argumen lewat secara otomatis dengan bereaksi. 80 00:06:19,260 --> 00:06:24,450 Dan itulah status masukan kami sebelumnya atau apa pun yang Anda ingin menyebutnya. 81 00:06:24,600 --> 00:06:26,880 Dan kita bisa menghilangkan tanda kurung ini di sini. 82 00:06:26,880 --> 00:06:33,420 Jadi di sini fungsi ini sebenarnya akan memberi tahu reaksi bahwa kita ingin mendapatkan status terbaru yang kita atur. 83 00:06:33,420 --> 00:06:41,220 Meskipun belum sepenuhnya berkomitmen untuk siklus render ini, maka sekarang status input sebelumnya memungkinkan kita 84 00:06:41,220 --> 00:06:45,510 untuk mengakses status input sebelumnya seperti ini. 85 00:06:45,510 --> 00:06:50,790 Dan perbedaan untuk menggunakan keadaan input 0 adalah bahwa kita sekarang tidak menggunakan keadaan 86 00:06:50,790 --> 00:06:56,610 terbaru yang telah sepenuhnya berkomitmen dan yang digunakan dalam siklus render komponen ini, tetapi kami 87 00:06:56,610 --> 00:07:04,020 menggunakan keadaan terbaru yang kami atur dengan fungsi pemutakhiran no masalah jika bereaksi sudah membuatnya kembali fungsi atau tidak berdasarkan 88 00:07:04,020 --> 00:07:05,490 pembaruan terakhir itu. 89 00:07:05,490 --> 00:07:11,550 Jadi sekarang di sini kita harus menjamin bahwa kita mendapatkan status terbaru setiap saat. 90 00:07:11,550 --> 00:07:18,530 Itu tentu saja yang kita inginkan di sini di sini braket tambahan yang hilang dengan cara untuk menutup fungsi 91 00:07:18,530 --> 00:07:19,910 input satu negara. 92 00:07:19,940 --> 00:07:25,330 Jadi sekarang ini pendekatan yang saya selalu ingin gunakan di sana untuk input jumlah D. 93 00:07:25,550 --> 00:07:33,080 Kami mendapatkan status masukan kami sebelumnya dan kemudian di sini kami mengembalikan objek javascript dan di objek itu dapat menggunakan 94 00:07:33,080 --> 00:07:39,270 status input sebelumnya untuk menetapkan judul atau jumlah sekarang adalah bahwa jika kita menyimpannya dan kembali, 95 00:07:39,270 --> 00:07:42,330 Anda akan benar-benar melihat perilaku aneh sekalipun. 96 00:07:42,690 --> 00:07:49,500 Jika Anda mulai mengetik, Anda akan mendapatkan kesalahan dan kesalahan itu memberi tahu Anda bahwa Anda menggunakan kembali suatu acara secara esensial. 97 00:07:50,010 --> 00:07:57,300 Sekarang masalahnya di sini adalah bahwa ketika kita meneruskan fungsi ke fungsi ini di sini ke fungsi set negara ini pada akhirnya 98 00:07:57,300 --> 00:08:01,710 maka kita memiliki fungsi anonim ini di sini dan itu adalah penutupan. 99 00:08:01,710 --> 00:08:07,590 Jadi itu hanyalah fungsi yang menutup nilai-nilai di sekitarnya dan dalam hal ini menutup fungsi kami 100 00:08:07,590 --> 00:08:08,480 di sini. 101 00:08:08,640 --> 00:08:15,450 Acara ini dimasukkan ke ini pada perubahan fungsi anonim dan dalam fungsi yang kita miliki di sini pada perubahan 102 00:08:15,450 --> 00:08:21,180 yang kita panggil fungsi set negara ini jadi kita memanggil fungsi tapi kemudian saya juga mendefinisikan 103 00:08:21,180 --> 00:08:23,100 fungsi bersarang lain di sini. 104 00:08:23,130 --> 00:08:29,280 Jadi kita memiliki fungsi 1 yang merupakan fungsi acara kita dan fungsi 2 yang merupakan fungsi pembaruan kita. 105 00:08:29,280 --> 00:08:35,040 Sekarang masalah dengan itu adalah bahwa jika dalam fungsi dalam ini di sini saya menggunakan sesuatu dari 106 00:08:35,100 --> 00:08:41,490 fungsi luar yang saya lakukan saya menggunakan acara maka acara ini akan dikunci untuk keystroke pertama pada dasarnya yang 107 00:08:41,520 --> 00:08:46,980 berarti bahwa untuk penekanan tombol berikutnya kami tidak menggunakan acara keystroke baru tetapi yang sebelumnya yang 108 00:08:47,220 --> 00:08:50,790 tentu saja kemudian digunakan kembali dan yang menyebabkan kesalahan ini. 109 00:08:50,790 --> 00:08:56,460 Sekarang biasanya itu tidak akan menjadi masalah tentu saja karena ya fungsi dalam ini 110 00:08:56,460 --> 00:09:02,550 fungsi memperbarui keadaan ini adalah penutupan dan karena itu menutup DB objek yang berarti ia menyimpan 111 00:09:02,550 --> 00:09:08,910 objek acara ini untuk pelaksanaannya sehingga ketika fungsi pemutakhiran antar negara berjalan yang terjadi secara asinkron, kami 112 00:09:08,910 --> 00:09:14,780 dijamin akan menggunakan acara yang dipicu untuk penekanan tombol itu atau dibuat untuk penekanan tombol. 113 00:09:14,790 --> 00:09:21,600 Masalah dengan peristiwa yang tidak benar-benar eksklusif untuk peristiwa dan bereaksi hanya adalah bahwa peristiwa reaksi bukan 114 00:09:21,600 --> 00:09:28,200 peristiwa Dom asli tetapi peristiwa sintetik khusus yang dibuat oleh reaksi yang pada dasarnya mereplikasi peristiwa 115 00:09:28,200 --> 00:09:34,710 Dom asli yang biasanya ia dapatkan tetapi bereaksi menambahkan faktor khusus untuk itu menarik objek 116 00:09:34,740 --> 00:09:38,430 acara ini yang berarti menggunakan kembali objek acara. 117 00:09:38,430 --> 00:09:44,040 Jadi alih-alih membuat objek acara baru untuk setiap keystroke, alih-alih menggunakan kembali objek sebelumnya dan 118 00:09:44,280 --> 00:09:49,260 konsekuensi dari ini adalah bahwa untuk keystroke kedua karena kami memiliki penutupan dan 119 00:09:49,560 --> 00:09:56,460 kami mengunci pada acara untuk keystroke pertama untuk keystroke kedua, kami masih menggunakan kembali objek yang sama yang 120 00:09:56,460 --> 00:10:02,790 kami miliki untuk keystroke pertama dan mati tolong masalah di sini kami menggunakan kembali objek acara yang 121 00:10:02,790 --> 00:10:06,000 salah karena cara bereaksi menangani objek acara. 122 00:10:06,060 --> 00:10:09,950 Sekarang saya tahu ini terdengar sangat membingungkan India. 123 00:10:09,960 --> 00:10:15,620 Ini benar-benar kasus khusus karena cara bereaksi menangani objek acara ini. 124 00:10:15,650 --> 00:10:23,520 Solusinya adalah bahwa permulaan dari fungsi set state ini kita buat sebuah konstanta misalnya yang kita 125 00:10:23,790 --> 00:10:30,300 dengar pada judul dapat memanggil judul baru dan nilai target event toko saya. 126 00:10:30,300 --> 00:10:35,130 Sekarang akan dibuat ulang kapan pun di mana pun kita mengetik. 127 00:10:35,130 --> 00:10:37,320 Dan sekarang kita membutuhkan fungsi tubuh yang sebenarnya. 128 00:10:37,320 --> 00:10:43,930 Jadi kita perlu membungkusnya dengan kurung kurawal karena sekarang kita sebenarnya memiliki lebih dari satu baris. 129 00:10:43,930 --> 00:10:47,790 Kami tidak hanya mengembalikan sesuatu, kami tidak hanya mengeksekusi satu ekspresi apa yang kami punya dua pernyataan 130 00:10:47,790 --> 00:10:48,360 di sini. 131 00:10:48,360 --> 00:10:54,690 Jadi sekarang Anda saya menyimpan judul baru untuk setiap keystroke dan sekarang ini di sini ini menetapkan 132 00:10:54,690 --> 00:11:02,120 bahwa fungsi dengan fungsi batin bersarang ini dapat menggunakan judul baru dan ini akan Dale untuk sekarang menutup ekstrak baru ini 133 00:11:02,120 --> 00:11:03,660 judul untuk setiap keystroke. 134 00:11:03,840 --> 00:11:11,080 Alih-alih menggunakan peristiwa yang sama sepanjang waktu itu objek acara yang sama tentu saja kita melakukan hal yang sama 135 00:11:11,080 --> 00:11:12,320 untuk jumlah mereka. 136 00:11:12,370 --> 00:11:17,110 Kita sekarang perlu kurung kurawal di sekitar seluruh ekspresi fungsi ini di sini. 137 00:11:17,380 --> 00:11:27,900 Lalu kita dapatkan yang baru, saya ingin mount dari target acara tidak berjudul nilai di sini dan jumlahnya sekarang hanyalah jumlah baru lagi 138 00:11:28,140 --> 00:11:35,100 hanya karena kami menggunakan penutupan di sini dan kami ingin memastikan bahwa kami menghasilkan jumlah 139 00:11:35,100 --> 00:11:37,170 baru untuk setiap keystroke. 140 00:11:37,170 --> 00:11:43,080 Dan kemudian ini akan secara otomatis dipertimbangkan oleh fungsi dalam ini alih-alih menggunakan kembali objek acara 141 00:11:43,170 --> 00:11:44,860 yang sama sepanjang waktu. 142 00:11:44,910 --> 00:11:51,680 Sekarang dengan itu kita dapat menyimpan ini kembali dan sekarang mulai mengetik di sini dan sekarang semua bekerja.