All language subtitles for 079 useCallback.en_US

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
pl Polish
pt Portuguese
pa Punjabi
ro Romanian Download
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:00,150 --> 00:00:01,150 Not bad, not bad. 2 00:00:01,170 --> 00:00:05,100 We've got a react memo method out of the way. 3 00:00:05,550 --> 00:00:07,810 Now, let me throw you a grade. 4 00:00:08,370 --> 00:00:14,430 What if I were to create a state value and I'll call this card? 5 00:00:14,710 --> 00:00:21,510 Well, not the actual item in the card, but will somewhat simulate that action where we go with cartons. 6 00:00:21,510 --> 00:00:26,450 And of course, we use used state our awesome hook. 7 00:00:26,460 --> 00:00:33,900 We provide the initial value, which is going to be zero, then will also set up add to cart function. 8 00:00:34,050 --> 00:00:42,930 So we're going to go there with CONSED and then add to cart like show and for the time being is just 9 00:00:42,930 --> 00:00:48,000 going to be a narrow function that does one very simple thing. 10 00:00:48,420 --> 00:00:55,590 It sets the cart to the previous value plus one card and then plus one. 11 00:00:55,620 --> 00:00:57,510 So that's my add to cart function. 12 00:00:58,140 --> 00:01:05,370 The thing is though that now I would want to pass that function down to my item. 13 00:01:05,880 --> 00:01:12,960 So first, right after the button, I'm going to create a new one and I'll add a little bit of inline 14 00:01:12,960 --> 00:01:13,710 styling here. 15 00:01:14,160 --> 00:01:19,350 The same margin top is equal to three arms. 16 00:01:19,740 --> 00:01:21,630 I think that is a good value. 17 00:01:21,930 --> 00:01:30,300 And then in here, let's say a cart is equal to my cart value, but that it should be zero because that 18 00:01:30,300 --> 00:01:31,110 is my default one. 19 00:01:31,320 --> 00:01:36,820 But then, like I said, I would want to pass this sucker down to a single product. 20 00:01:36,840 --> 00:01:37,230 Yes. 21 00:01:37,230 --> 00:01:43,560 Granted, we'll do some prob drilling, but I think we can live with that because there's something 22 00:01:43,560 --> 00:01:45,250 else that I'd want to show you. 23 00:01:45,990 --> 00:01:52,830 So where I have the big list now, let's go with the prop of add to CART and then of course, I'll add 24 00:01:53,010 --> 00:01:54,090 to cart function. 25 00:01:54,480 --> 00:01:59,330 Add to cart prop is equal to my add to cart function and of course we need to structure it. 26 00:01:59,340 --> 00:02:03,740 We already know that and then we need to pass it into that single component. 27 00:02:03,750 --> 00:02:04,230 Correct. 28 00:02:04,620 --> 00:02:15,060 The single product had the cart again add to cart over here and then finally we get down to the single 29 00:02:15,060 --> 00:02:21,960 product and then in the single product I would want to add a button that of course calls it so right 30 00:02:21,960 --> 00:02:23,550 after the paragraph. 31 00:02:23,550 --> 00:02:30,920 I'm going to go with button that will add on Kleck and then we'll pass and add to CART. 32 00:02:31,650 --> 00:02:36,530 So we're not going to add that item literally to the cart, but we'll simulate that action. 33 00:02:36,540 --> 00:02:45,090 So add to CART and again, there's going to be a issue and the issue is going to be simply because we 34 00:02:45,090 --> 00:02:49,790 click to add cart and no, again, we're calling that single item. 35 00:02:50,400 --> 00:02:57,070 So every time I click on this button again, I'm rendering all the items. 36 00:02:57,570 --> 00:02:59,730 OK, now why is that happening? 37 00:02:59,760 --> 00:03:00,090 Well. 38 00:03:00,950 --> 00:03:08,420 If we scroll up, we see that we have this big list now in this case, we have the products that we 39 00:03:08,420 --> 00:03:14,710 technically took care of with a memo, OK, but then we have add to cart function. 40 00:03:15,050 --> 00:03:16,510 So this is our problem. 41 00:03:16,940 --> 00:03:25,510 And I told you in the last video that every time props or state changes component we'll render. 42 00:03:26,180 --> 00:03:33,920 Now, the thing is, when we change the state value, we trigger the render and each and every time 43 00:03:33,920 --> 00:03:37,140 we create this function from the scratch. 44 00:03:37,520 --> 00:03:45,550 So that's why React thinks that, hey, listen, this value changed because it was recreated from the 45 00:03:45,560 --> 00:03:46,040 scratch. 46 00:03:46,370 --> 00:03:49,840 And that's why, again, we're triggering the rear end. 47 00:03:50,580 --> 00:03:51,750 Now, what is the solution? 48 00:03:51,770 --> 00:03:59,830 The solution is using use called back, which essentially are somewhat similar like we were doing with 49 00:03:59,840 --> 00:04:00,380 a memo. 50 00:04:00,620 --> 00:04:06,980 But now it's going to deal with a function where it's going to check, hey, listen, has the value 51 00:04:07,340 --> 00:04:10,710 for the function changed if it hasn't changed? 52 00:04:10,910 --> 00:04:11,260 Good. 53 00:04:11,810 --> 00:04:16,460 I don't need to recreate that function from the scratch if the value has changed. 54 00:04:16,490 --> 00:04:21,710 Well, then, of course, I would need to create that function one more time. 55 00:04:22,160 --> 00:04:27,050 So what we do is call use callback. 56 00:04:28,150 --> 00:04:37,230 And then we would want to pass in that function, so here again, we wrap our function in the parentheses, 57 00:04:37,250 --> 00:04:38,500 that's step number one. 58 00:04:38,980 --> 00:04:43,760 But also what I would want is the dependancy or. 59 00:04:44,750 --> 00:04:52,580 And that is very important because what I would want is each and every time I update the current value, 60 00:04:52,910 --> 00:04:58,410 I also create this function and I'll show you what happens if you don't do that. 61 00:04:58,670 --> 00:05:07,310 But the good news is now that if I'm just working with a count, I'm not going to trigger that or surrender, 62 00:05:07,670 --> 00:05:13,700 because what you'll note is that once you click on the count, check it out. 63 00:05:14,420 --> 00:05:18,370 See, the items are still just 12. 64 00:05:18,770 --> 00:05:24,850 So I don't render each and every time I click on a card because with our previous setup. 65 00:05:25,130 --> 00:05:27,260 So without this use callback. 66 00:05:27,640 --> 00:05:29,270 By the way, I didn't show you that. 67 00:05:29,280 --> 00:05:30,770 So my apologies. 68 00:05:30,770 --> 00:05:37,460 Let me delete it and I'll recreate it from scratch here where now the problem is that as I'm clicking 69 00:05:37,460 --> 00:05:44,360 on account, all the items still get rearranged because again, this function gets created from the 70 00:05:44,360 --> 00:05:48,620 scratch and then react, thinks, hey, listen, the props change. 71 00:05:48,640 --> 00:05:51,800 So I need to trigger the referendum. 72 00:05:52,130 --> 00:05:54,460 That's why we use this use callback. 73 00:05:54,710 --> 00:06:00,110 So now we create this function only when we update the card value. 74 00:06:00,260 --> 00:06:06,230 So just like we had dependancy array with use, the fact we have the same thing with our use callback. 75 00:06:06,410 --> 00:06:13,880 And that is very important because you might be tempted to do something like this where you go, OK, 76 00:06:13,940 --> 00:06:16,400 I have my count, I have the card. 77 00:06:16,410 --> 00:06:21,860 So I only want to create a function when I have the initial render. 78 00:06:22,280 --> 00:06:28,760 Now the problem is going to be you're not going to get that second value because if you go and if you 79 00:06:28,760 --> 00:06:32,820 cancel the card, it is always going to be zero. 80 00:06:33,200 --> 00:06:41,030 So if I go here and if I click on add to cart notice as the card is going to be zero, and then even 81 00:06:41,030 --> 00:06:49,670 though my value got updated in the state, since I didn't create this function when the card value changed, 82 00:06:49,920 --> 00:06:51,860 well, it's always going to be sitting on a zero. 83 00:06:52,160 --> 00:06:59,030 So here you can keep on clicking and it's always going to be one because I didn't create that function 84 00:06:59,240 --> 00:07:02,750 one more time when this value changed. 85 00:07:02,780 --> 00:07:04,740 So that's where you have dependancy array. 86 00:07:05,150 --> 00:07:11,840 That's why you add whichever value you would want to use to recreate the function, which of course, 87 00:07:11,840 --> 00:07:13,170 in our case is the card. 88 00:07:13,580 --> 00:07:19,250 So once this value changes, we would want to create that function one more time. 89 00:07:19,460 --> 00:07:24,920 Now, of course, in that case, we will trigger the Randers that is normal. 90 00:07:25,250 --> 00:07:28,080 That is not unexpected, but at least in this case. 91 00:07:28,100 --> 00:07:35,600 Notice how I can keep on collecting the count and I'm not triggering the reminder also as a side note. 92 00:07:36,550 --> 00:07:43,960 If you check out the console, you should see here the warning where we have react, hook use effect 93 00:07:43,960 --> 00:07:49,260 has a missing dependancy, the get product, and that is coming from our customers. 94 00:07:49,570 --> 00:07:53,990 And this is another use case where we can use the use callback. 95 00:07:54,370 --> 00:08:03,520 So just wait a little bit in the next video cover use memo and then we'll circle back and we'll take 96 00:08:03,520 --> 00:08:10,390 a look at how we can use this use callback to get rid of this warning in the console. 9523

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