All language subtitles for 020 Refactoring an Input Component_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
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 Download
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,250 --> 00:00:04,310 Now there is one last hook, 2 00:00:04,310 --> 00:00:06,060 not in general there are more hooks, 3 00:00:06,060 --> 00:00:08,550 but there is one last hook which I wanna dive in right now 4 00:00:08,550 --> 00:00:11,660 because it fits really well into this section here 5 00:00:11,660 --> 00:00:13,820 into this module. 6 00:00:13,820 --> 00:00:15,610 For that we'll first of all have to change 7 00:00:15,610 --> 00:00:17,170 our code a little bit though. 8 00:00:17,170 --> 00:00:19,280 We'll create a new component, 9 00:00:19,280 --> 00:00:22,860 a input component that contains our input divs, 10 00:00:22,860 --> 00:00:27,240 and that receives all the data it needs through props. 11 00:00:27,240 --> 00:00:30,170 So that just like the button it's reusable 12 00:00:30,170 --> 00:00:31,900 because we will indeed reuse it 13 00:00:31,900 --> 00:00:34,850 for the email and the password input. 14 00:00:34,850 --> 00:00:38,350 Now, feel free to try to create such an input component 15 00:00:38,350 --> 00:00:43,100 on your own and use it here in this log in forum. 16 00:00:43,100 --> 00:00:45,150 That's a little mini assignment, 17 00:00:45,150 --> 00:00:47,180 a little mini tasks you can dive in. 18 00:00:47,180 --> 00:00:50,810 Here's a short pause for you to pause the video 19 00:00:50,810 --> 00:00:52,260 and thereafter we'll do that together 20 00:00:52,260 --> 00:00:55,373 and thereafter, we'll see which hook I'm talking about. 21 00:00:58,380 --> 00:01:01,380 So, very successful, let's do it together. 22 00:01:01,380 --> 00:01:03,060 For data in the UI folder, 23 00:01:03,060 --> 00:01:06,620 I'll edit input folder with their input JS file. 24 00:01:06,620 --> 00:01:09,850 And in there from React, I import React 25 00:01:09,850 --> 00:01:12,610 because we're going to create a component in there 26 00:01:12,610 --> 00:01:14,770 the input component which gets props 27 00:01:14,770 --> 00:01:17,563 and which we export here just like this. 28 00:01:19,000 --> 00:01:22,530 Now the JSX that should be returned here as I mentioned 29 00:01:22,530 --> 00:01:25,550 should be that div here, 30 00:01:25,550 --> 00:01:28,250 so I'll grab that div from the email, 31 00:01:28,250 --> 00:01:30,360 cut it from the login component 32 00:01:30,360 --> 00:01:33,243 and add it here as a return value. 33 00:01:34,290 --> 00:01:38,460 And therefore I'll also add an input.module.CSSfile, 34 00:01:38,460 --> 00:01:41,350 to bring over all the styles I want. 35 00:01:41,350 --> 00:01:46,333 So I'll import classes from ./input.module.CSS, 36 00:01:50,410 --> 00:01:54,190 and of course all the migrate the respect of styles. 37 00:01:54,190 --> 00:01:57,040 Here in the login module, 38 00:01:57,040 --> 00:02:01,563 I'm basically talking about all those control styles here. 39 00:02:02,530 --> 00:02:06,550 They are all related except for the actions, 40 00:02:06,550 --> 00:02:08,940 so actually I'll cut everything in front of actions 41 00:02:08,940 --> 00:02:12,470 because actions is part of the login component. 42 00:02:12,470 --> 00:02:15,480 Bring the control part into the input module, 43 00:02:15,480 --> 00:02:17,470 CSS file build and that of course, 44 00:02:17,470 --> 00:02:19,493 then all includes this media Curry. 45 00:02:21,210 --> 00:02:23,950 Bring that over as well, 46 00:02:23,950 --> 00:02:26,420 and with that we got the styles migrated. 47 00:02:26,420 --> 00:02:28,660 Now back in the input component, 48 00:02:28,660 --> 00:02:31,830 we now got some data we need to get from outside. 49 00:02:31,830 --> 00:02:33,100 To make this reusable, 50 00:02:33,100 --> 00:02:34,780 I of course don't want to focus 51 00:02:34,780 --> 00:02:36,860 on just the emails state here, 52 00:02:36,860 --> 00:02:38,470 instead I'm just interested in 53 00:02:38,470 --> 00:02:40,770 whether these input is valid or not, 54 00:02:40,770 --> 00:02:44,270 so I expect to get just is valid prop 55 00:02:44,270 --> 00:02:46,700 on my prompts object here to then add 56 00:02:46,700 --> 00:02:48,750 these invalid clause or not. 57 00:02:48,750 --> 00:02:52,410 This text here should be settable from outside. 58 00:02:52,410 --> 00:02:54,263 Let's say on a label prop, 59 00:02:55,400 --> 00:02:59,803 this ID here should be settable from outside. 60 00:03:03,210 --> 00:03:05,973 So I will expect us on our ID prop, 61 00:03:06,950 --> 00:03:10,810 this type here should be settable from outside. 62 00:03:10,810 --> 00:03:14,290 The value should be settable from outside, 63 00:03:14,290 --> 00:03:17,040 and here to change and the blur handlers as well. 64 00:03:17,040 --> 00:03:21,777 So here I'll have onChange, and here I'll have onBlur. 65 00:03:23,120 --> 00:03:26,940 And this should be a quiet reusable input component. 66 00:03:26,940 --> 00:03:29,910 And we can now use this here in the login component 67 00:03:29,910 --> 00:03:31,853 where we previously had that div. 68 00:03:32,860 --> 00:03:35,160 So there I'll add the input component, 69 00:03:35,160 --> 00:03:38,410 of course, for that make sure you do import it. 70 00:03:38,410 --> 00:03:41,610 You do import your input component here 71 00:03:41,610 --> 00:03:44,310 from the newly traded input file, 72 00:03:44,310 --> 00:03:46,960 and now we need to configure that component. 73 00:03:46,960 --> 00:03:49,760 So for example, we need to pass our ID, 74 00:03:49,760 --> 00:03:54,580 email, our label, which was email like this, 75 00:03:54,580 --> 00:03:59,057 our type which is email and also is valid prop 76 00:04:01,790 --> 00:04:05,700 which is the email is valid constant, 77 00:04:05,700 --> 00:04:07,800 which we essentially have up here 78 00:04:07,800 --> 00:04:10,250 pulling it out from the email state. 79 00:04:10,250 --> 00:04:11,950 That's something we wanna forward. 80 00:04:14,700 --> 00:04:19,100 And of course we also need the value prop 81 00:04:19,100 --> 00:04:24,070 that needs to be set on our email state value 82 00:04:26,980 --> 00:04:29,493 and also onChange and onBlur. 83 00:04:30,550 --> 00:04:33,960 So onChange here is our email change handler, 84 00:04:33,960 --> 00:04:38,960 and onBlur is our validate email handler. 85 00:04:41,740 --> 00:04:44,410 And with that, we have our email input. 86 00:04:44,410 --> 00:04:48,980 Now we also of course, need to migrate the password, 87 00:04:48,980 --> 00:04:51,110 so here we're going to replace this div 88 00:04:51,110 --> 00:04:54,253 with this input but now for password, 89 00:04:55,450 --> 00:04:58,040 the label text should be password. 90 00:04:58,040 --> 00:05:00,230 The password at a type should be password. 91 00:05:00,230 --> 00:05:02,800 Here we have password is valid, 92 00:05:02,800 --> 00:05:05,400 we have the password state value. 93 00:05:05,400 --> 00:05:07,760 We got the password change handler 94 00:05:07,760 --> 00:05:11,313 and we got the validate password handler here. 95 00:05:14,690 --> 00:05:19,690 So with that, we should have to the same behavior as before, 96 00:05:19,900 --> 00:05:21,600 and we do that works 97 00:05:21,600 --> 00:05:24,850 but now we have these separate components here. 98 00:05:24,850 --> 00:05:28,060 Now that's a nice practice and that's always good. 99 00:05:28,060 --> 00:05:29,590 And it's also a good example 100 00:05:29,590 --> 00:05:33,130 for when we wanna use props verses Context. 101 00:05:33,130 --> 00:05:35,980 We absolutely want props here 102 00:05:35,980 --> 00:05:37,710 because those input components, 103 00:05:37,710 --> 00:05:40,560 as you can see should be reusable 104 00:05:40,560 --> 00:05:43,690 and they offer you as props so that we can configure them 105 00:05:43,690 --> 00:05:46,730 from inside the parent where we are using them. 106 00:05:46,730 --> 00:05:49,210 If we would use Context inside of the input, 107 00:05:49,210 --> 00:05:51,070 every input would do the same thing, 108 00:05:51,070 --> 00:05:52,940 it would be bound to the same Context, 109 00:05:52,940 --> 00:05:55,033 it might be less reusable then. 110 00:05:55,890 --> 00:05:57,600 But that wasn't the main focus, 111 00:05:57,600 --> 00:06:02,600 this instead just now allows me to move on to the next hook, 112 00:06:02,630 --> 00:06:03,880 which I want to show you. 8816

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