Home javascript React Hooks (UseCallBack and Usememo)

React Hooks (UseCallBack and Usememo)

Author

Date

Category

Comrades .. There was a problem, I can not understand the chips of UseCallback hooks and Usememo. I already read a dock and a couple of different articles, but there is no clear picture for what it is necessary, which is from this benefit, in which phase it happens. I will be grateful for any intelligent explanation.


Answer 1, Authority 100%

Let’s start with UseCallback

Let’s write the simplest function counter.

Function App () {
 Const [Count, SetCount] = Ussestate (0);
 Return (
  & lt; div classname = "app" & gt;
   & lt; p & gt; counter: {count} & lt; / p & gt;
   & lt; button
   OnClick = {_ = & gt; SetCount (PrevCount = & GT; PrevCount + 1)} & gt;
    Increment & lt; / Button & gt;
  & lt; / div & gt;
 );
}

Add a function there that displays the text

to the console

Function App () {
 Const [Count, SetCount] = Ussestate (0);
 Const Helloconsole = _ = & gt; {
  Console.log ("Hi Chaps :)");
 };
 Helloconsole ();
 Return (
  & lt; div classname = "app" & gt;
   & lt; p & gt; counter: {count} & lt; / p & gt;
   & lt; button
   OnClick = {_ = & gt; SetCount (PrevCount = & GT; PrevCount + 1)} & gt;
    Increment & lt; / Button & gt;
  & lt; / div & gt;
 );
}

Now every time you increasing the meter, this Helloconsole function will be re-created.
That is

First Render

Function App () {
 const Count = 0;
 Const Helloconsole = _ = & gt; {
  Console.log ("Hi Chaps :)");
 };
 Helloconsole ();
 // ...

Second Render

Function App () {
 Const Count = 1;
 Const Helloconsole = _ = & gt; {
  Console.log ("Hi Chaps :)");
 };
 Helloconsole ();
 // ...

Third Render

Function App () {
 Const Count = 2;
 Const Helloconsole = _ = & gt; {
  Console.log ("Hi Chaps :)");
 };
 Helloconsole ();
 // ...

and the Helloconsole function from the first render is not equal to the function from the second render-a, etc. Each render is created by a new Helloconsole function with a new link.

// 1 count ------- 2 count //
Helloconsole! == Helloconsole

And here you have to think that it will be if you have such a function on the real project that each time is relaxed and within 500 lines of code makes certain calculations. I think the performance of this component will fall. And even depending on the situation and code it will be possible to notice it with a naked eye.

Solution USCallback

You need to wrap your feature in UseCallback and add an array of dependencies.

const anyfunc = usechallback (() = & gt; {
  // 500 lines of code
 }, [Dependencies]);

Important remark

1. It is necessary to use USCallback without an array of dependencies.

const anyfunc = usechallback (() = & gt; {
  // Any Code
 }, []);

So do not write. Here you will lose more than you get. If there is no dependency array simply write the function beyond the component. Something like this.

const anyfunc = () = & gt; {
  // Any Code
 };
Function APP () {// Our Component

This code is identical to UseCallback without an array of dependencies. I advise you to use the second approach if an array usecallback empty.

2. It is necessary to use UseCallback everywhere where you can use.

const handleclick = USCallback (() = & gt; {
  // Processing Events Click
 }, []);

Again in this code you lose more than, get. Your component will become slower.

Here here you can see how the component with and without Usecallback

Hook Usememo

Unlike USCallback which only the CallBakes Usememo Memoisters everything.

const list = react.usememo (() = & gt;
 ListOfiTems.map (Item = & GT; ({
  ... Item,
  ItemPROP1: ExpenSiveFunction (Props.first),
  ItemPROP2: AnotherPriceFunction (Pros.Second)
 })), [ListOfItems]
)

Example taken From here

In this case, Usememo Returns an array.

in the link upstairs which I specified written

If You Implement Usememo Too Often In An Application, It Can Harm The
Performance.

If you use Usememo often & nbsp; This may harm the performance of the application.

It means the second remark that I wrote at the top for USCallback Actually and for Usememo .

Also, if you try to make a Callback to Usememo, it will be identical to the use of Usecallback

USCallback (FN, DEPS) is an equivalent of usememo (() = & gt; fn, DEPS).

Answer 2, Authority 33%

UseCallback remembers the function and does not re-create it to optimize it.

Usememo remembers the value and does not recount it (complex mathematical calculations), also for optimization.

is applied depending on what needs: function or value.

Programmers, Start Your Engines!

Why spend time searching for the correct question and then entering your answer when you can find it in a second? That's what CompuTicket is all about! Here you'll find thousands of questions and answers from hundreds of computer languages.

Recent questions