How to use componentWillMount() in React Hooks?












3















In the official docs of React it mentions -




If you’re familiar with React class lifecycle methods, you can think
of useEffect Hook as componentDidMount, componentDidUpdate, and
componentWillUnmount combined.




My question is - how can we use the componentWillMount() lifecyle method in a hook?










share|improve this question



























    3















    In the official docs of React it mentions -




    If you’re familiar with React class lifecycle methods, you can think
    of useEffect Hook as componentDidMount, componentDidUpdate, and
    componentWillUnmount combined.




    My question is - how can we use the componentWillMount() lifecyle method in a hook?










    share|improve this question

























      3












      3








      3








      In the official docs of React it mentions -




      If you’re familiar with React class lifecycle methods, you can think
      of useEffect Hook as componentDidMount, componentDidUpdate, and
      componentWillUnmount combined.




      My question is - how can we use the componentWillMount() lifecyle method in a hook?










      share|improve this question














      In the official docs of React it mentions -




      If you’re familiar with React class lifecycle methods, you can think
      of useEffect Hook as componentDidMount, componentDidUpdate, and
      componentWillUnmount combined.




      My question is - how can we use the componentWillMount() lifecyle method in a hook?







      javascript reactjs jsx react-hooks






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 25 '18 at 4:13









      AbrarAbrar

      7521025




      7521025
























          3 Answers
          3






          active

          oldest

          votes


















          13














          You cannot use any of the existing lifecycle methods (componentDidMount, componentDidUpdate, componentWillUnmount etc.) in a hook.They can only be used in a class components. And Hooks you can only use in a functional components. What the below line from the React doc




          If you’re familiar with React class lifecycle methods, you can think of useEffect Hook as componentDidMount, componentDidUpdate, and componentWillUnmount combined.




          suggest is, you can mimic these lifecycle method from class component in a functional components.



          Code inside componentDidMount run once when the component is mounted. useEffect hook equivalent for this behaviour is



          useEffect(() => {
          // Your code here
          }, );


          Notice the second parameter here (empty array). This will run only once.



          Without the second parameter the useEffect hook will be called on every render of the component which can be dangerous.



          useEffect(() => {
          // Your code here
          });


          componentWillUnmount is use for cleanup (like removing event listners, cancel the timer etc). Say you are adding a event listner in componentDidMount and remvoing it in componentWillUnmount as below.



          componentDidMount() {
          window.addEventListner('mousemove', () => {})
          }

          componentWillUnmount() {
          window.removeEventListner('mousemove', () => {})
          }


          Hook equivalent of above code will be



          useEffect(() => {
          window.addEventListner('mousemove', () => {});

          // returned function will be called on component unmount
          return () => {
          window.removeEventListner('mousemove', () => {})
          }
          }, )





          share|improve this answer

































            4














            According to reactjs.org, componentWillMount will not be supported in the future.
            https://reactjs.org/docs/react-component.html#unsafe_componentwillmount



            There is no need to use componentWillMount.



            If you want to do something before the component mounted, just do it in the constructor().



            If you want to do network requests, do not do it in componentWillMount. It is because doing this will lead to unexpected bugs.



            Network requests can be done in componentDidMount.



            Hope it helps.






            share|improve this answer



















            • 1





              and the question was how to implement it with hooks

              – Shubham Khatri
              Nov 26 '18 at 13:27













            • but you do not need to implement it with hooks because it will not be supported. No need to learn how to do that with hooks.

              – MING WU
              Nov 27 '18 at 3:01











            • Now that you have mentioned that componentDidMount is the correct lifecycle to use, you could have added how to implement that in your answer and then your answer would make more sense than the accepted answer

              – Shubham Khatri
              Nov 27 '18 at 5:19











            • that is right. Thanks for pointing it out. I will add it later this week.

              – MING WU
              Nov 27 '18 at 7:37



















            0














            https://reactjs.org/docs/hooks-reference.html#usememo




            Remember that the function passed to useMemo runs during rendering.
            Don’t do anything there that you wouldn’t normally do while rendering.
            For example, side effects belong in useEffect, not useMemo.







            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53464595%2fhow-to-use-componentwillmount-in-react-hooks%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              3 Answers
              3






              active

              oldest

              votes








              3 Answers
              3






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              13














              You cannot use any of the existing lifecycle methods (componentDidMount, componentDidUpdate, componentWillUnmount etc.) in a hook.They can only be used in a class components. And Hooks you can only use in a functional components. What the below line from the React doc




              If you’re familiar with React class lifecycle methods, you can think of useEffect Hook as componentDidMount, componentDidUpdate, and componentWillUnmount combined.




              suggest is, you can mimic these lifecycle method from class component in a functional components.



              Code inside componentDidMount run once when the component is mounted. useEffect hook equivalent for this behaviour is



              useEffect(() => {
              // Your code here
              }, );


              Notice the second parameter here (empty array). This will run only once.



              Without the second parameter the useEffect hook will be called on every render of the component which can be dangerous.



              useEffect(() => {
              // Your code here
              });


              componentWillUnmount is use for cleanup (like removing event listners, cancel the timer etc). Say you are adding a event listner in componentDidMount and remvoing it in componentWillUnmount as below.



              componentDidMount() {
              window.addEventListner('mousemove', () => {})
              }

              componentWillUnmount() {
              window.removeEventListner('mousemove', () => {})
              }


              Hook equivalent of above code will be



              useEffect(() => {
              window.addEventListner('mousemove', () => {});

              // returned function will be called on component unmount
              return () => {
              window.removeEventListner('mousemove', () => {})
              }
              }, )





              share|improve this answer






























                13














                You cannot use any of the existing lifecycle methods (componentDidMount, componentDidUpdate, componentWillUnmount etc.) in a hook.They can only be used in a class components. And Hooks you can only use in a functional components. What the below line from the React doc




                If you’re familiar with React class lifecycle methods, you can think of useEffect Hook as componentDidMount, componentDidUpdate, and componentWillUnmount combined.




                suggest is, you can mimic these lifecycle method from class component in a functional components.



                Code inside componentDidMount run once when the component is mounted. useEffect hook equivalent for this behaviour is



                useEffect(() => {
                // Your code here
                }, );


                Notice the second parameter here (empty array). This will run only once.



                Without the second parameter the useEffect hook will be called on every render of the component which can be dangerous.



                useEffect(() => {
                // Your code here
                });


                componentWillUnmount is use for cleanup (like removing event listners, cancel the timer etc). Say you are adding a event listner in componentDidMount and remvoing it in componentWillUnmount as below.



                componentDidMount() {
                window.addEventListner('mousemove', () => {})
                }

                componentWillUnmount() {
                window.removeEventListner('mousemove', () => {})
                }


                Hook equivalent of above code will be



                useEffect(() => {
                window.addEventListner('mousemove', () => {});

                // returned function will be called on component unmount
                return () => {
                window.removeEventListner('mousemove', () => {})
                }
                }, )





                share|improve this answer




























                  13












                  13








                  13







                  You cannot use any of the existing lifecycle methods (componentDidMount, componentDidUpdate, componentWillUnmount etc.) in a hook.They can only be used in a class components. And Hooks you can only use in a functional components. What the below line from the React doc




                  If you’re familiar with React class lifecycle methods, you can think of useEffect Hook as componentDidMount, componentDidUpdate, and componentWillUnmount combined.




                  suggest is, you can mimic these lifecycle method from class component in a functional components.



                  Code inside componentDidMount run once when the component is mounted. useEffect hook equivalent for this behaviour is



                  useEffect(() => {
                  // Your code here
                  }, );


                  Notice the second parameter here (empty array). This will run only once.



                  Without the second parameter the useEffect hook will be called on every render of the component which can be dangerous.



                  useEffect(() => {
                  // Your code here
                  });


                  componentWillUnmount is use for cleanup (like removing event listners, cancel the timer etc). Say you are adding a event listner in componentDidMount and remvoing it in componentWillUnmount as below.



                  componentDidMount() {
                  window.addEventListner('mousemove', () => {})
                  }

                  componentWillUnmount() {
                  window.removeEventListner('mousemove', () => {})
                  }


                  Hook equivalent of above code will be



                  useEffect(() => {
                  window.addEventListner('mousemove', () => {});

                  // returned function will be called on component unmount
                  return () => {
                  window.removeEventListner('mousemove', () => {})
                  }
                  }, )





                  share|improve this answer















                  You cannot use any of the existing lifecycle methods (componentDidMount, componentDidUpdate, componentWillUnmount etc.) in a hook.They can only be used in a class components. And Hooks you can only use in a functional components. What the below line from the React doc




                  If you’re familiar with React class lifecycle methods, you can think of useEffect Hook as componentDidMount, componentDidUpdate, and componentWillUnmount combined.




                  suggest is, you can mimic these lifecycle method from class component in a functional components.



                  Code inside componentDidMount run once when the component is mounted. useEffect hook equivalent for this behaviour is



                  useEffect(() => {
                  // Your code here
                  }, );


                  Notice the second parameter here (empty array). This will run only once.



                  Without the second parameter the useEffect hook will be called on every render of the component which can be dangerous.



                  useEffect(() => {
                  // Your code here
                  });


                  componentWillUnmount is use for cleanup (like removing event listners, cancel the timer etc). Say you are adding a event listner in componentDidMount and remvoing it in componentWillUnmount as below.



                  componentDidMount() {
                  window.addEventListner('mousemove', () => {})
                  }

                  componentWillUnmount() {
                  window.removeEventListner('mousemove', () => {})
                  }


                  Hook equivalent of above code will be



                  useEffect(() => {
                  window.addEventListner('mousemove', () => {});

                  // returned function will be called on component unmount
                  return () => {
                  window.removeEventListner('mousemove', () => {})
                  }
                  }, )






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Jan 18 at 0:14









                  tanguy_k

                  6,21323039




                  6,21323039










                  answered Nov 25 '18 at 6:26









                  Bhaskar Gyan VardhanBhaskar Gyan Vardhan

                  5701516




                  5701516

























                      4














                      According to reactjs.org, componentWillMount will not be supported in the future.
                      https://reactjs.org/docs/react-component.html#unsafe_componentwillmount



                      There is no need to use componentWillMount.



                      If you want to do something before the component mounted, just do it in the constructor().



                      If you want to do network requests, do not do it in componentWillMount. It is because doing this will lead to unexpected bugs.



                      Network requests can be done in componentDidMount.



                      Hope it helps.






                      share|improve this answer



















                      • 1





                        and the question was how to implement it with hooks

                        – Shubham Khatri
                        Nov 26 '18 at 13:27













                      • but you do not need to implement it with hooks because it will not be supported. No need to learn how to do that with hooks.

                        – MING WU
                        Nov 27 '18 at 3:01











                      • Now that you have mentioned that componentDidMount is the correct lifecycle to use, you could have added how to implement that in your answer and then your answer would make more sense than the accepted answer

                        – Shubham Khatri
                        Nov 27 '18 at 5:19











                      • that is right. Thanks for pointing it out. I will add it later this week.

                        – MING WU
                        Nov 27 '18 at 7:37
















                      4














                      According to reactjs.org, componentWillMount will not be supported in the future.
                      https://reactjs.org/docs/react-component.html#unsafe_componentwillmount



                      There is no need to use componentWillMount.



                      If you want to do something before the component mounted, just do it in the constructor().



                      If you want to do network requests, do not do it in componentWillMount. It is because doing this will lead to unexpected bugs.



                      Network requests can be done in componentDidMount.



                      Hope it helps.






                      share|improve this answer



















                      • 1





                        and the question was how to implement it with hooks

                        – Shubham Khatri
                        Nov 26 '18 at 13:27













                      • but you do not need to implement it with hooks because it will not be supported. No need to learn how to do that with hooks.

                        – MING WU
                        Nov 27 '18 at 3:01











                      • Now that you have mentioned that componentDidMount is the correct lifecycle to use, you could have added how to implement that in your answer and then your answer would make more sense than the accepted answer

                        – Shubham Khatri
                        Nov 27 '18 at 5:19











                      • that is right. Thanks for pointing it out. I will add it later this week.

                        – MING WU
                        Nov 27 '18 at 7:37














                      4












                      4








                      4







                      According to reactjs.org, componentWillMount will not be supported in the future.
                      https://reactjs.org/docs/react-component.html#unsafe_componentwillmount



                      There is no need to use componentWillMount.



                      If you want to do something before the component mounted, just do it in the constructor().



                      If you want to do network requests, do not do it in componentWillMount. It is because doing this will lead to unexpected bugs.



                      Network requests can be done in componentDidMount.



                      Hope it helps.






                      share|improve this answer













                      According to reactjs.org, componentWillMount will not be supported in the future.
                      https://reactjs.org/docs/react-component.html#unsafe_componentwillmount



                      There is no need to use componentWillMount.



                      If you want to do something before the component mounted, just do it in the constructor().



                      If you want to do network requests, do not do it in componentWillMount. It is because doing this will lead to unexpected bugs.



                      Network requests can be done in componentDidMount.



                      Hope it helps.







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Nov 25 '18 at 4:20









                      MING WUMING WU

                      16818




                      16818








                      • 1





                        and the question was how to implement it with hooks

                        – Shubham Khatri
                        Nov 26 '18 at 13:27













                      • but you do not need to implement it with hooks because it will not be supported. No need to learn how to do that with hooks.

                        – MING WU
                        Nov 27 '18 at 3:01











                      • Now that you have mentioned that componentDidMount is the correct lifecycle to use, you could have added how to implement that in your answer and then your answer would make more sense than the accepted answer

                        – Shubham Khatri
                        Nov 27 '18 at 5:19











                      • that is right. Thanks for pointing it out. I will add it later this week.

                        – MING WU
                        Nov 27 '18 at 7:37














                      • 1





                        and the question was how to implement it with hooks

                        – Shubham Khatri
                        Nov 26 '18 at 13:27













                      • but you do not need to implement it with hooks because it will not be supported. No need to learn how to do that with hooks.

                        – MING WU
                        Nov 27 '18 at 3:01











                      • Now that you have mentioned that componentDidMount is the correct lifecycle to use, you could have added how to implement that in your answer and then your answer would make more sense than the accepted answer

                        – Shubham Khatri
                        Nov 27 '18 at 5:19











                      • that is right. Thanks for pointing it out. I will add it later this week.

                        – MING WU
                        Nov 27 '18 at 7:37








                      1




                      1





                      and the question was how to implement it with hooks

                      – Shubham Khatri
                      Nov 26 '18 at 13:27







                      and the question was how to implement it with hooks

                      – Shubham Khatri
                      Nov 26 '18 at 13:27















                      but you do not need to implement it with hooks because it will not be supported. No need to learn how to do that with hooks.

                      – MING WU
                      Nov 27 '18 at 3:01





                      but you do not need to implement it with hooks because it will not be supported. No need to learn how to do that with hooks.

                      – MING WU
                      Nov 27 '18 at 3:01













                      Now that you have mentioned that componentDidMount is the correct lifecycle to use, you could have added how to implement that in your answer and then your answer would make more sense than the accepted answer

                      – Shubham Khatri
                      Nov 27 '18 at 5:19





                      Now that you have mentioned that componentDidMount is the correct lifecycle to use, you could have added how to implement that in your answer and then your answer would make more sense than the accepted answer

                      – Shubham Khatri
                      Nov 27 '18 at 5:19













                      that is right. Thanks for pointing it out. I will add it later this week.

                      – MING WU
                      Nov 27 '18 at 7:37





                      that is right. Thanks for pointing it out. I will add it later this week.

                      – MING WU
                      Nov 27 '18 at 7:37











                      0














                      https://reactjs.org/docs/hooks-reference.html#usememo




                      Remember that the function passed to useMemo runs during rendering.
                      Don’t do anything there that you wouldn’t normally do while rendering.
                      For example, side effects belong in useEffect, not useMemo.







                      share|improve this answer




























                        0














                        https://reactjs.org/docs/hooks-reference.html#usememo




                        Remember that the function passed to useMemo runs during rendering.
                        Don’t do anything there that you wouldn’t normally do while rendering.
                        For example, side effects belong in useEffect, not useMemo.







                        share|improve this answer


























                          0












                          0








                          0







                          https://reactjs.org/docs/hooks-reference.html#usememo




                          Remember that the function passed to useMemo runs during rendering.
                          Don’t do anything there that you wouldn’t normally do while rendering.
                          For example, side effects belong in useEffect, not useMemo.







                          share|improve this answer













                          https://reactjs.org/docs/hooks-reference.html#usememo




                          Remember that the function passed to useMemo runs during rendering.
                          Don’t do anything there that you wouldn’t normally do while rendering.
                          For example, side effects belong in useEffect, not useMemo.








                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Feb 10 at 15:20







                          user11041494





































                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53464595%2fhow-to-use-componentwillmount-in-react-hooks%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Feedback on college project

                              Futebolista

                              Albești (Vaslui)