All language subtitles for 012 Alternative Creating A Shared Handler Function_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic Download
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:02,130 --> 00:00:04,500 Now before we'll dive deeper 2 00:00:04,500 --> 00:00:06,870 into state, React events, 3 00:00:06,870 --> 00:00:09,810 and what we can do with all these things, 4 00:00:09,810 --> 00:00:11,430 I wanna take a closer look 5 00:00:11,430 --> 00:00:15,240 at these change handler functions, 6 00:00:15,240 --> 00:00:18,810 because at the moment in this demo application 7 00:00:18,810 --> 00:00:21,960 I have three change handler functions. 8 00:00:21,960 --> 00:00:26,340 One for the title, one for the amount, and one for the date. 9 00:00:26,340 --> 00:00:30,600 Which makes sense since I have these three state slices 10 00:00:30,600 --> 00:00:33,813 and these three main inputs. 11 00:00:34,800 --> 00:00:38,910 And of course, using this approach is also absolutely fine. 12 00:00:38,910 --> 00:00:40,110 There's nothing wrong 13 00:00:40,110 --> 00:00:43,740 with having these different change handler functions, 14 00:00:43,740 --> 00:00:46,950 but I wanna show you an alternative approach 15 00:00:46,950 --> 00:00:49,293 which you also could consider using. 16 00:00:50,130 --> 00:00:51,750 Instead of having all these 17 00:00:51,750 --> 00:00:54,090 separate change handler functions, 18 00:00:54,090 --> 00:00:58,710 you could try to create one shared change handler function. 19 00:00:58,710 --> 00:01:01,020 For that, we could create a new function 20 00:01:01,020 --> 00:01:04,053 which could be named inputChangeHandler. 21 00:01:05,160 --> 00:01:07,890 And here I'll also create an arrow function, 22 00:01:07,890 --> 00:01:12,120 but I'll now not accept the event argument. 23 00:01:12,120 --> 00:01:16,740 But instead here we could accept some identifier, 24 00:01:16,740 --> 00:01:19,380 though this name is up to you because it's your function, 25 00:01:19,380 --> 00:01:21,450 hence your parameter name. 26 00:01:21,450 --> 00:01:23,103 And then maybe a value. 27 00:01:24,450 --> 00:01:27,690 And my idea is that I can use this one single function 28 00:01:27,690 --> 00:01:31,890 for all my inputs, for all those onChange events. 29 00:01:31,890 --> 00:01:36,120 And then we can simply identify the different inputs 30 00:01:36,120 --> 00:01:37,620 with help of this identifier 31 00:01:37,620 --> 00:01:41,280 and update the correct state slice 32 00:01:41,280 --> 00:01:44,700 based on the identifier that was passed to this function 33 00:01:44,700 --> 00:01:46,263 with that value. 34 00:01:47,430 --> 00:01:51,180 So in here we could, for example, check if identifier 35 00:01:51,180 --> 00:01:54,420 is equal to, let's say, title. 36 00:01:54,420 --> 00:01:58,950 And if that's the case, we update the title state 37 00:01:58,950 --> 00:02:00,580 by calling setEnteredTitle 38 00:02:01,530 --> 00:02:04,563 and setting this equal to the new value. 39 00:02:06,720 --> 00:02:10,860 Else if it's not title, we could check if the identifier 40 00:02:10,860 --> 00:02:15,860 is maybe equal to the date here, so if it's equal to date, 41 00:02:18,270 --> 00:02:23,270 and then update the EnteredDate with the value. 42 00:02:23,370 --> 00:02:26,700 And else it must be the amount, 43 00:02:26,700 --> 00:02:29,580 and therefore we could then call setEnteredAmount 44 00:02:29,580 --> 00:02:31,713 and set as equal to value. 45 00:02:34,140 --> 00:02:36,030 So with that, I am calling 46 00:02:36,030 --> 00:02:37,980 all these state updating functions, 47 00:02:37,980 --> 00:02:39,030 but I'm now doing this 48 00:02:39,030 --> 00:02:42,033 all in one shared change handler function. 49 00:02:43,390 --> 00:02:46,380 Now we can't use this change handler function 50 00:02:46,380 --> 00:02:49,770 as a input for onChange now though. 51 00:02:49,770 --> 00:02:51,990 That won't work because as you learned, 52 00:02:51,990 --> 00:02:54,960 React will, in the end, call this function for us 53 00:02:54,960 --> 00:02:58,080 and will pass such an event object to it 54 00:02:58,080 --> 00:03:00,750 and it will definitely not pass an identifier 55 00:03:00,750 --> 00:03:02,130 and value to it. 56 00:03:02,130 --> 00:03:04,860 We're not going to get those data points 57 00:03:04,860 --> 00:03:06,933 when React calls this function. 58 00:03:07,800 --> 00:03:11,013 But we need them for this function to work correctly. 59 00:03:12,060 --> 00:03:15,600 Now what we can do here to work around this, 60 00:03:15,600 --> 00:03:18,450 is we can go to this onChange function 61 00:03:18,450 --> 00:03:22,500 and instead of passing a pointer to inputChangeHandler 62 00:03:22,500 --> 00:03:24,390 as a value to onChange, 63 00:03:24,390 --> 00:03:26,580 we can pass an arrow function to it. 64 00:03:26,580 --> 00:03:29,040 A new anonymous arrow function 65 00:03:29,040 --> 00:03:32,100 which we create down there where we need it. 66 00:03:32,100 --> 00:03:35,040 With that, it's this arrow function that will be called 67 00:03:35,040 --> 00:03:37,710 by React whenever this input changes. 68 00:03:37,710 --> 00:03:40,260 Therefore this arrow function will receive 69 00:03:40,260 --> 00:03:41,583 this event object. 70 00:03:42,780 --> 00:03:45,600 And in the body of this arrow function 71 00:03:45,600 --> 00:03:49,740 we can now manually execute inputChangeHandler. 72 00:03:49,740 --> 00:03:53,940 So execute this function here, which I just added. 73 00:03:53,940 --> 00:03:57,180 We manually execute it by adding parentheses. 74 00:03:57,180 --> 00:03:59,790 And now this code in here will not be executed 75 00:03:59,790 --> 00:04:02,070 when this line of code here is parsed, 76 00:04:02,070 --> 00:04:04,980 but instead this here will only be executed 77 00:04:04,980 --> 00:04:07,980 when this arrow function here is executed. 78 00:04:07,980 --> 00:04:10,350 And that will only be the case 79 00:04:10,350 --> 00:04:12,093 when this change event occurs. 80 00:04:13,440 --> 00:04:17,670 But now that we have this wrapper arrow function here 81 00:04:17,670 --> 00:04:19,740 we have full control 82 00:04:19,740 --> 00:04:22,893 over how inputChangeHandler will be executed. 83 00:04:23,730 --> 00:04:26,730 And we can therefore now pass our identifier 84 00:04:26,730 --> 00:04:28,770 as a first argument. 85 00:04:28,770 --> 00:04:30,900 So for example, title here, 86 00:04:30,900 --> 00:04:34,350 so that for this title input here, 87 00:04:34,350 --> 00:04:36,480 we pass title as an identifier, 88 00:04:36,480 --> 00:04:39,183 so that we make it into this if branch here. 89 00:04:40,800 --> 00:04:44,760 And as a second argument, we pass the value that changed. 90 00:04:44,760 --> 00:04:48,300 So in this case here, event.target.value, 91 00:04:48,300 --> 00:04:52,020 just as before, but now in this arrow function. 92 00:04:52,020 --> 00:04:54,420 And with that, we as a developer, 93 00:04:54,420 --> 00:04:57,150 control how this function here will be called 94 00:04:57,150 --> 00:04:59,820 by wrapping it in such a arrow function, 95 00:04:59,820 --> 00:05:02,250 which is the actual function that's passed 96 00:05:02,250 --> 00:05:04,413 as a value to the onChange prop. 97 00:05:05,670 --> 00:05:08,100 But then we control how this inner function 98 00:05:08,100 --> 00:05:11,070 will be executed when the change event occurs, 99 00:05:11,070 --> 00:05:14,190 and we can then use this generic handler function 100 00:05:14,190 --> 00:05:17,700 because now we could use this same code here, 101 00:05:17,700 --> 00:05:19,620 or almost the same code, 102 00:05:19,620 --> 00:05:22,980 on the amount input value, for example, 103 00:05:22,980 --> 00:05:25,623 and pass amount as an identifier. 104 00:05:26,520 --> 00:05:28,590 But other than that, it's the same code 105 00:05:28,590 --> 00:05:32,340 and the function that's being executed is always the same. 106 00:05:32,340 --> 00:05:35,940 And this approach simply is an alternative 107 00:05:35,940 --> 00:05:40,410 to having multiple specialized handler functions. 108 00:05:40,410 --> 00:05:42,780 As mentioned, there's nothing wrong 109 00:05:42,780 --> 00:05:45,720 with having these specialized handler functions, 110 00:05:45,720 --> 00:05:47,550 but as an alternative, 111 00:05:47,550 --> 00:05:50,523 you could consider using such shared functions. 112 00:05:51,720 --> 00:05:54,360 With that, I'll get rid of that though 113 00:05:54,360 --> 00:05:57,900 and move back to the code we had before 114 00:05:57,900 --> 00:05:59,970 with the titleChangeHandler 115 00:05:59,970 --> 00:06:02,193 and the amountChangeHandler here. 116 00:06:04,230 --> 00:06:07,080 But I definitely wanted to share this alternative 117 00:06:07,080 --> 00:06:10,320 since it is something you might see in some React projects. 118 00:06:10,320 --> 00:06:13,230 And since it is something you might want to use yourself 119 00:06:13,230 --> 00:06:15,093 in your React projects. 9388

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.